0

我有一个我认为很简单的结构:

class GroupEvent < ActiveRecord::Base
  attr_accessible :user_id, :title, :description, :identifier, :start_date, :end_date, :time_zone, :url, :capacity, :info_url, :logo_url, :logo_ssl_url, :status

  has_one :event_venue
  has_one :event_organizer
  has_one :event_ticket
  has_one :event_condition
  belongs_to :user
end

class User < ActiveRecord::Base
  attr_accessible :email, :name, :password, :password_confirmation
  has_secure_password

  has_many :group_events
  ...
end

但是在我执行时在 Rails 控制台中

@user = User.new
@event = @user.group_events.build

我收到一个错误:ActiveRecord::InverseOfAssociationNotFoundError: 找不到 group_events 的反向关联(:GroupEvent 中的用户)。

更新:我仍然无法让用户和 GroupEvent 看到对方。GroupEvent.new 和 EventVenue.new 创建新对象,并且

@event = GroupEvent.new
@venue = @event.build_event_venue

应该创建一个 @event.event_venue 对象。(虽然我仍然很困惑

@event.event_venue.build

返回 NoMethodError: undefined method `build' for nil:NilClass。)

4

1 回答 1

0

更新:它现在可以工作了。

@event = @user.group_event.build 

创建一个新的 GroupEvent 对象。对于后来的任何人,我很抱歉,我不知道我做了什么。上面的代码看起来仍然一样。我不知道每次进行更改时都需要重新启动控制台,但重新启动控制台似乎可以解决我的问题。

一个挥之不去的问题困扰着我。@user.build_group_event 和 @user.group_event.build 生成相同的结果(一个 GroupEvent 对象),但对于我的其他类,@event.build_event_venue 生成一个对象,但 @event.event_venue.build 仍然返回“NoMethodError:未定义方法‘build’为 nil:NilClass”。我就是想不通。但是我有工作代码,所以我不会对此做太多的事情。

谢谢您的帮助。

于 2012-05-31T10:26:07.630 回答