我应该使用哪个Rails Association?

时间:2016-09-20 21:13:38

标签: ruby-on-rails associations models

我正在尝试编写一个允许用户注册活动的应用。每个活动都有其所有者和计划参加活动的用户。我无法为后者选择正确的关联。我已经尝试过has_and_belongs_to_many,但是在某个地方读过它不建议使用它,所以我尝试使用has_many:through并且它似乎不起作用。这就是我现在想出来的:

def sign_up
    user = User.find(session[:user_id])
    @event.users << user
end

注册码如下所示:

Cannot modify association 'Event#users' because the source reflection class 'User' is associated to 'EventUser' via :has_many.

此代码返回错误:

{{1}}

你能告诉我我做错了什么,怎么做对了?这是我第一个认真的Rails应用程序,我真的想以正确的方式编写它。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可能希望区分所有者和来宾。我这样做:

#models/event.rb
  belongs_to :owner, class_name: "User"
  has_many :guests, class_name: "User", through: :event_users
  has_many :event_users

#models/eventuser.rb
  belongs_to :users
  belongs_to :events

#models/user.rb
  has_many :event_users
  has_many :events, through: :event_users
  has_many :event_ownerships, class_name: "Event"

这里非常重要的一点是,EventUser(s)属于belongs_to,表示你指出的多对多关系。

此外,您无法重新定义user.events关联,您需要重命名它。