2012-11-05 78 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