通过has_many构建一个实例

时间:2012-05-30 20:16:41

标签: ruby-on-rails

我认为这是一个简单的结构:

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:nil:NilClass的未定义方法`build'。)

1 个答案:

答案 0 :(得分: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:undefined”方法`build'for nil:NilClass“。我只是想不出来。但是我有工作代码,所以我不会就此做出太大的交易。

感谢您的帮助。