【问题标题】:User invitation Schema用户邀请架构
【发布时间】:2012-11-05 18:29:44
【问题描述】:

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

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

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

感谢您的任何建议。谢谢!

解决方案

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

  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"

-尼克

【问题讨论】:

    标签: ruby-on-rails database-schema


    【解决方案1】:

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

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

    我会在lists 表中有一个user_id 列来跟踪列表的所有者。

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

    【讨论】:

    • 感谢您的意见。我也喜欢邀请作为它自己的实体。我想我会试试这个。我也喜欢“active_until”的想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多