我有两个模型,User
和Event
,我会在它们之间设置两个不同的关联。
我想:
- 拥有许多托管事件的用户
- 有许多参加活动的用户
- 属于一个用户(所有者/创建者)的事件
- 属于许多用户(与会者)的事件
对于有人参加的活动而言,这是一个拥有并且属于许多关系的东西,并且只有很多用于托管事件,我只是不知道如何正确设置它/轨道方式。
我知道我需要一个users_attended_events表
我认为在User
模型
has_many :events, through: :hosted_events
has_many :events, through: :attended_events
但是我对Event
的模型有什么看法?
我有:
belongs_to: user
alias_attribute :owner, :user
alias_attribute :creator, :user
has_many :users, through:???
这应该是users_attended_events表,所以..我会在这里放什么?我如何命名这个“参加者”
答案 0 :(得分:1)
对于托管活动的用户而言,听起来并不需要通过关联的has_many。如果您的hosted_by_id
表格上有events
列,那么这样的内容就足够了(在 user.rb 中):
has_many :hosted_events, class_name: "Event", foreign_key: "hosted_by_id"
参加假设包含attendee_id
和event_id
列的联接类的事件:
class AttendeeEvent < ActiveRecord::Base
belongs_to :attendee, class_name: "User"
belongs_to :event
end
您可以将以下关联添加到 user.rb :
has_many :attendee_events, foreign_key: "attendee_id"
has_many :attended_events, through: :attendee_events, source: :event
source: :event
选项表示此关联的目标对象是从加入对象上的event
关联中找到的。
event.rb 中的关联是:
belongs_to :hosted_by, class_name: "User"
has_many :attendee_events
has_many :attendees, through: :attendee_events