0

BrickItem を作成するときに、Ability への参照があることを期待しています。ただし、BrickItem が作成されるとき、ability_id は null です。なんで?

私のテーブル作成:

  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

申し訳ありませんが、私はあなたのコードを理解していません。あなたが作成しようとしている場合、能力はこのように見えるはずです(能力コントローラ上で)

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 に答える
0

全体像を完全に理解しているかどうかはわかりませんが、あなたが共有したコードから、いくつかの問題があるようです:

  1. 列が1つしかないため、列ability_idを呼び出す必要があります
  2. レンガのアイテムがability_idを保持している場合、has_oneではなくbelong_toを使用する必要があります
  3. build_ability は新しい能力を構築するだけです。create_ability を使用する必要があります。
于 2012-12-12T18:49:46.750 に答える