我正在尝试构建一个模型来存储事件信息并为其创建一个注册列表。注册列表关联的最佳方式是什么?我应该序列化一个列并使其存储如:user1,user2,user3或者我应该创建一个新表。如果我创建一个新表格,我将如何将其与此模型相关联?注册会有多个事件。
目前我已经为模型的其余部分提供了这个:
rails generate model Event title:string description:string start:datetime end:datetime location:string numberofvolunteers:integer
答案 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
如果您愿意,也可以通过过滤accepted
和attended
来创建其他关系。
这里的解决方案非常“Rails Way”,在设计数据库时应该是您的默认倾向。但是,如果您不想查看用户参加的事件并且您想要手动检查列表是唯一的(因此相同的用户不会失败),您也可以首先建议只存储用户ID列表。两次)。