0

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

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

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

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

解决方案

我发现有必要在用户模型中指定包含外键的表。IE

  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"

-缺口

4

1 回答 1

1

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

我会保留一张表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
于 2012-11-05T18:45:05.690 回答