[英]Devise and multiple users models
我是Rails
新手,並嘗試設置一個使用幾種類型用戶的應用程序: Teacher
, Student
, Admin
(可能還會更多)。
我想要不同模型的原因是因為各個用戶的屬性不同。 例如,“ Teacher
具有講授的主題,專業和文憑。 而Student
和Admin
則沒有。 學生可以留下對老師等的評論。
我想到了一個用於一般信息(例如姓名 , 電子郵件和其他聯系信息)的一般User
模型,每種類型的用戶都將繼承該模型:
class Admin < User
end
class Teacher < User
end
class Student < User
end
等等。
我正在使用Devise
進行身份驗證,並使用STI
通過表中的角色字段來區分用戶角色。
問題是,當用戶登錄時,我該在哪里以及如何告訴我的應用程序生成正確類的current_user
? 我應該在哪里存儲每種型號的其他信息(例如教師的職業)。 在用戶表中?
例如,關於與對象之間的關系,老師有許多他教的話題。 如何確定只有老師有話題,沒有學生?
我調查了CanCan,但完全感到困惑。
我的建議是:不要這樣做! 您正在混合非常不同的關注點,最終會遇到臭名昭著的上帝對象。
用戶僅用於身份驗證,您不應將其與域模型混合使用。 教師/學生/管理員等應與用戶分開使用。 您最終可以創建一個People表,並讓Teacher Student和Admin繼承自該表。
class Student < Person
或為每個表設置不同的表,這樣就不會造成混亂(例如,某人可能既是教師又是管理員,分開的內容會使您的選擇保持打開狀態)
但是,無論您選擇什么,都不要讓用戶參與其中!
如果要將用戶綁定到教師/學生/管理員,請使用關聯,並為每個關聯指定一個user_id。
class Student < ActiveRecord::Base
belongs_to :user
end
請查看此鏈接。 希望這對您有幫助:
http://funonrails.com/2011/12/multiple-resources-registrations-with/
另外,您可以通過使模型(表)成為多態的來管理它們與對象的關系,例如:
# Topic Model:
belongs_to :readable, :polymorphic => true
Also in topic model there are two more fields:-
readable_id and readable_type.
# Teacher Model:
has_many :topics, as: :readable
# Sturdent Model:
has_many :topics, as: :readable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.