用户邀请架构

时间:2012-11-05 18:29:45

标签: ruby-on-rails database-schema

我正在开发一个RoR应用程序,用户可以在其中制作列表并邀请其他用户加入他们的列表。我不确定如何处理邀请数据模型。我认为用户邀请模型相当常见,但我没有找到任何好的例子。

我希望任何用户都可以邀请任何其他用户加入他们的列表。被邀请者(另一个用户)将能够接受或拒绝该邀请。

我目前在用户和列表之间存在多对多的关系。这两个实体(lists_users)之间的连接表是否应包含有关邀请的信息?当用户接受或拒绝邀请时,创建另一个表,邀请以及添加和删除记录会更好吗?如果后者是可取的,我应该如何处理列表所有者(用户)与列表被邀请者(用户)?

我很感激任何建议。谢谢!

解决方案

我发现有必要在User Model中指定包含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

1 个答案:

答案 0 :(得分:0)

这些只是我自己的两分钱,但这就是我要做的。

我会保留一个表lists_users来跟踪已加入列表的用户。

我在user_id表格中有一个lists列,用于跟踪列表所有者。

然后,我会设置一个“邀请”模型,例如invitee_idinviter_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