0

我有两个模型, aUser和 a Event,我想在它们之间建立两个不同的关联。

我想要:
- 一个用户有很多托管的活动
- 一个用户有很多参加的活动
- 一个属于一个用户(所有者/创建者)
的活动 - 一个属于多个用户(参加者)的活动

对于参加的活动来说,这是一个拥有并属于许多关系的关系,并且对于举办的活动有很多关系,我只是不知道如何正确设置它/rails 方式。

我知道我需要一个 users_attended_events 表

认为User在模型上会是这样的

has_many :events, through: :hosted_events
has_many :events, through: :attended_events

但是我会如何处理Event's 模型?

我有:

belongs_to: user
alias_attribute :owner, :user
alias_attribute :creator, :user

has_many :users, through:??? 

这应该是 users_attended_events 表,所以..我会在这里放什么?我如何命名这个“与会者”

4

1 回答 1

1

听起来您不需要 has_many through 关联来托管事件的用户。如果你的桌子上有一个列,这样的东西应该足够工作(在user.rb中) :hosted_by_idevents

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
于 2013-08-31T19:50:02.520 回答