0

我期望当我创建一个 BrickItem 时,它会引用一个能力。然而,当 BrickItem 创建时,abilities_id 为空。为什么?

我的表创建:

  create_table "brick_items", :force => true do |t|
  t.integer  "abilities_id"

我的能力迁移:

  Ability.create :name => 'my choice'

我的控制器:

def create
        @brick_item = BrickItem.new(params[:brick_item])
        @brick_item.build_ability(:id => 1)

我的模型:

  class BrickItem < ActiveRecord::Base
  has_one :ability
end
4

2 回答 2

0

我不确定我是否完全了解整个情况,但从您共享的代码来看,似乎存在几个问题:

  1. 您应该调用列ability_id,因为只有一个
  2. 如果砖项目拥有ability_id,那么你应该使用belong_to而不是has_one
  3. build_ability 只会构建一个新的能力。您应该使用 create_ability。
于 2012-12-12T18:49:46.750 回答
0

对不起,我不明白你的代码,如果你试图创建和能力,你应该看起来像这样(在你的能力控制器上)

def create
    @brick_item =  @brick_item = BrickItem.new(params[:brick_item])
    @ability = @brick_item.build_brick_item(params[:ability])
end

但我不太确定你想做什么。

于 2012-12-12T21:34:31.390 回答