Ruby on rails Rails/Desive:在模型中存储用户列表

Ruby on rails Rails/Desive:在模型中存储用户列表,ruby-on-rails,devise,models,Ruby On Rails,Devise,Models,我正在尝试构建一个模型来存储事件信息,并为其创建一个注册列表。关联注册列表的最佳方式是什么?我应该序列化列并将其存储为:user1、user2、user3,还是创建一个新表。如果我创建一个新表,我将如何将其与此模型关联?将有多个注册活动 目前,我为模型的其余部分提供了以下内容: rails generate model Event title:string description:string start:datetime end:datetime location:string numbero

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

目前,我为模型的其余部分提供了以下内容:

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

这是一个相当标准的数据建模问题,您通常希望将其建模为多对多关系。您需要生成一个中间表来连接事件和用户。下面,我添加了一些您可能想要跟踪的有用属性-邀请是否被接受(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

您还可以通过过滤
accepted
attended
来获得乐趣,如果您愿意,还可以创建其他关系


这里的解决方案是“Rails方式”,可能是您在设计数据库时的默认选择。但是,如果您不想查看用户参加了哪些活动,并且希望手动检查列表的唯一性(因此同一用户不会两次宕机),那么您也可以首先建议只存储一个用户ID列表。

我基本上是想注册一个志愿活动,需要一定数量的志愿者。所以这个模型对我不适用,但我得到了应用它的总体思路。我正在使用另一个模型,它有名称、电子邮件、startdatetime和enddatetime。我用“归属于:事件”@ShravMehta与上面的事件模型相关联,只要用户只能参加一个事件,它就可以工作。这是可能的,但这是一个相当不寻常的要求,特别是如果你想跟踪过去的出席情况。哦,我如何应用这一点,以便用户可以注册多个活动。请参阅我的答案!你需要一种多对多的关系。你不必让它成为“邀请”;例如,它可以是“出席人数”,也可以是诸如“注册地点”(如果有人要求出席)、出席地点等字段。啊,所以我应该说这两个模型都有很多。谢谢你的额外帮助!
class User
  has_many :invites
  has_many :events, through: :invites
end