2012-11-05 80 views
0

我正在開發一個RoR應用程序,用戶可以在其中創建列表並邀請其他用戶加入他們的列表。我不知道應該如何處理邀請數據模型。我會假設用戶邀請模式是相當普遍的,但我還沒有找到任何好的例子。用戶邀請架構

我想任何用戶都可以邀請其他用戶加入他們的列表。被邀請者(另一個用戶)將能夠接受或拒絕邀請。

我在用戶和列表之間有多對多的關係。這兩個實體(lists_users)之間的連接表是否應該包含有關邀請的信息?在用戶接受或拒絕邀請時,創建另一個表格,邀請並添加和刪除記錄會更好嗎?如果後者是明智的,我應該如何處理列表所有者(用戶)與列表受邀者(用戶)?

我很感激任何意見。謝謝!

我認爲有必要,可以指定包含在用戶模型的foregin鍵表。即

has_many :owned_lists, :class_name => "List", :foreign_key =>"owner_id" 
    has_many :created_invitations, :class_name => "Invitation", :foreign_key =>"invitor_id" 
    has_many :received_invitations,:class_name => "Invitation", :foreign_key => "invitee_id" 

-Nick

回答

0

這只是我自己的兩分錢,但在這裏就是我會做。

我會保留一個表lists_users跟蹤已加入列表的用戶。

我想在lists表中有一個user_id列來跟蹤列表的所有者。

然後,我會有一個「邀請」模型,例如invitee_id,inviter_idlist_id,以跟蹤邀請。使用該邀請時會被銷燬。邀請可能還需要某種有效日期。

的車型應該是這樣的:

class List < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    belongs_to :owner, class_name: "User" 
    has_and_belongs_to_many :invitations 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :lists 
    has_many :owned_lists, class_name: "List" 
    has_many :created_invitations, foreign_key: "invitor_id" 
    has_many :received_invitations, foreign_key: "invitee_id" 
end 

class Invitation < ActiveRecord::Base 
    belongs_to :invitor, class: "User" 
    belongs_to :invitee, class: "User" 
    belongs_to :list 
end 
+0

感謝您的想法。我喜歡邀請,因爲它也是自己的實體。我想我會試試這個。我也喜歡'active_until'的想法。 – Nick