如何建立一个具有has_many和belongs_to的关系

时间:2019-04-26 19:06:16

标签: ruby-on-rails activerecord

我有User个可以创建Event的人。这些是组织者。

其他User s可以作为参与者参加这些Event s。

我应该如何建立以下关系?

用户:

has_many :events, foreign_key: organizer_id
belongs_to :event

事件:

belongs_to :user #how to do the organizer and attendees distinction?

2 个答案:

答案 0 :(得分:1)

我建议创建一个event_attends表并在其中放置user_idevent_id列以及user_id表中的event_attend_idevents。然后,您可以创建如下关联:

class User < ActiveRecord::Base
  has_many :event_attends
  has_many :events
end

class Event < ActiveRecord::Base
  belongs_to :user
  has_many :event_attends
end

class EventAttend < ActiveRecord::Base
  belongs_to :user
  belongs_to :event
end

答案 1 :(得分:0)

在每个模型上,您需要两个名称不同但名称相同的关系。另外,您在参与者和事件之间具有多对多关系。

用户

has_many :organized_events, class_name: "Event"
has_and_belongs_to_many :attended_events, class_name: "Event"

事件:

belongs_to :organizer, class_name: "User"
has_and_belongs_to_many :attendees, class_name: "User"