0

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

目前我有这个模型的其余部分:

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

1 回答 1

0

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

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创建其他关系来获得幻想。

这里的解决方案非常“The Rails Way”,可能应该是您在设计数据库时的默认倾向。但是,如果您不想查看用户参加了哪些活动并且您想手动检查列表是否唯一(因此同一用户不会关闭),那么您第一个仅存储用户 ID 列表的建议也是可能的两次)。

于 2013-10-11T01:07:10.300 回答