0

我正在構建一個包含用戶,學生,導師,會議類的小應用程序。Rails在與第三方的關係中定義的多個角色

每個用戶可以在一次會議上輔導,但在另一次會議上學生。我一直在思考如何建立這些關係的模型。

現在,我有一個用戶模型,一個具有屬性Role =「tutor」/「student」的單獨參與者模型。輔導員和學生使用單表繼承擴展參與者,並且屬於會議。

但是,我不知道這是不是一個好的設計。 (這對我來說似乎不直觀)。

你會在我的情況下做什麼?

謝謝。

回答

0

這是可以接受的,但還有其他更清潔的方法。你可以設計你Meeting模式是這樣的:

has_and_belongs_to_many :users, :as => :studens 
belongs_to :tutor, :foreign_key => 'tutor_id', :class_name => 'User' 

User型號:

has_and_belongs_to_many :meetings, :as => :meetings_taken 
has_many :meetings_given, :foreign_key => 'tutor_id', :class_name => 'Meeting' 

所以,你只需要兩種車型。

//編輯

有關建議,接受,拒絕..我想創建一個Invitation型號user_id:integer(邀請用戶),meeting_id(通過這個你知道誰可以邀請其他人,因爲會議屬於導師),status:string(等待,接受,delicesed可能是選項)也許explaination:text(當有人微笑)。

+0

您的解決方案非常自然和直觀。但是,導師和學生在每次會議中有不同的行爲(建議,接受,拒絕等)。也就是說,每次事件,我都必須在某處存儲此類操作。你將如何實現這一點? – AdamNYC

+0

我更新了帖子! – davidb

+0

謝謝大衛。這與我所擁有的相似。由於邀請有兩個不同的角色,我創建了兩個繼承邀請的類(或在我的情況下,參與者)。我不知道是否應該讓邀請直接繼承用戶。 – AdamNYC