用户和事件之间的ActiveRecord关联

时间:2014-02-13 18:43:31

标签: ruby-on-rails activerecord model associations

我有一个用户和一个事件模型。我希望能够将每个事件与多个参与用户相关联,然后让另一个也在参与者中的用户被标记为所有者,这样我就能够像@ event.users那样进行调用以检索所有与会者,@ event.owner,检索所有者,然后还能够调用@ user.events,以获取用户正在参加的事件。

创建名为Events_Users的第三个模型是最优化的,它通过将user_id与event_id一起存储来跟踪用户和事件之间的关系,或者仅使用user_id和owner_id更新现有的Event模型?

拜托,一些具体的建议将不胜感激 感谢

1 个答案:

答案 0 :(得分:2)

我会这样做。

class Event < ActiveRecord::Base
  belongs_to :owner, class_name: 'User'
  has_and_belongs_to_many :attendees, class_name: 'User' 
end

这样,您将在events表(所有者)中拥有对用户的引用ID,并且将为用户/事件(事件的与会者)提供典型HABTM关系的连接表。

希望它有所帮助!

更新 的 这是User class的关联:

class User < ActiveRecord::Base
  has_many :events
  has_and_belongs_to_many :attended_events, class_name: 'Event'
end

更新2 这是关联的Rails指南link。它将解释如何为这些关系创建适当的表和列。