0

私は次の設定をしています:

モデル:

class Product < ActiveRecord::Base
  has_one :product_category

  attr_accessible :name, :product_category, :product_category_id
end

class ProductCategory < ActiveRecord::Base
  belongs_to :product

  attr_accessible :name

end

移行:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.references :product_category
      t.string :name

      t.timestamps
    end
  end
end

class CreateProductCategories < ActiveRecord::Migration
  def change
    create_table :product_categories do |t|
      t.string :name

      t.timestamps
    end
  end
end

ここで、FactoryGirlとRSpecを使用してそれをテストしたいと思います。そこで、次のFactoryGirlテストモデルを設定しました。

product_spec.rb

require 'factory_girl'
FactoryGirl.define do
  factory :product, class: Product do
    product_category {|a| a.association(:product_category)}
    name "Demo Product"
  end
end

product_category_spec.rb

require 'factory_girl'
FactoryGirl.define do
  factory :product_category, class: ProductCategory do
    name "Demo Product"
  end
end

しかし、product_spec.rbでRSpecを実行すると、次のエラーが発生します。

can't write unknown attribute 'product_id'

なぜこれが起こるのか理解できません。product_categoryを製品ファクトリから削除すると、すべてが機能します。

4

1 に答える 1

2

移行が間違っています。ドキュメントで説明されbelongs_toているように、外部キーを保持する必要があります。

于 2012-08-30T15:30:45.477 に答える