Rails / Devise:在模型中存储用户列表

时间:2013-10-11 00:56:42

标签: ruby-on-rails devise models

我正在尝试构建一个模型来存储事件信息并为其创建一个注册列表。注册列表关联的最佳方式是什么?我应该序列化一个列并使其存储如:user1,user2,user3或者我应该创建一个新表。如果我创建一个新表格,我将如何将其与此模型相关联?注册会有多个事件。

目前我已经为模型的其余部分提供了这个:

rails generate model Event title:string description:string start:datetime end:datetime location:string numberofvolunteers:integer 

1 个答案:

答案 0 :(得分:0)

这是一个相当标准的数据建模问题,您通常希望将其建模为多对多关系。您需要生成一个中间表来加入事件和用户。下面我添加了一些您可能想要跟踪的有用属性 - 邀请是否被接受(RSVP)以及他们是否真正参加过:

rails generate model Invite user_id:integer event_id:integer accepted:boolean attended:boolean

那么你有:

class Event
  has_many :invites
  has_many :users, through: :invites
end

class User
  has_many :invites
  has_many :events, through: :invites
end

如果您愿意,也可以通过过滤acceptedattended来创建其他关系。

这里的解决方案非常“Rails Way”,在设计数据库时应该是您的默认倾向。但是,如果您不想查看用户参加的事件并且您想要手动检查列表是唯一的(因此相同的用户不会失败),您也可以首先建议只存储用户ID列表。两次)。