簡體   English   中英

設計和多用戶模型

[英]Devise and multiple users models

我是Rails新手,並嘗試設置一個使用幾種類型用戶的應用程序: TeacherStudentAdmin (可能還會更多)。

我想要不同模型的原因是因為各個用戶的屬性不同。 例如,“ Teacher具有講授的主題,專業和文憑。 StudentAdmin則沒有。 學生可以留下對老師等的評論。

我想到了一個用於一般信息(例如姓名電子郵件和其他聯系信息)的一般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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM