我有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?
答案 0 :(得分:1)
我建议创建一个event_attends
表并在其中放置user_id
和event_id
列以及user_id
表中的event_attend_id
和events
。然后,您可以创建如下关联:
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"