Rails3 FactoryGirl has_one неизвестная ошибка атрибута

У меня есть следующая установка:

Модели:

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

Но когда я запускаю RSpec для product_spec.rb, я получаю следующую ошибку:

can't write unknown attribute 'product_id'

Я не могу понять, почему это происходит. Если я удалю product_category из фабрики продуктов, все будет работать.


person Bryce    schedule 30.08.2012    source источник


Ответы (1)


Ваши миграции неверны: belongs_to должен иметь внешний ключ, как объяснено в документе .

person apneadiving    schedule 30.08.2012
comment
Ох, чувак, я чувствую себя тупицей, совершив такую ​​простую ошибку. Спасибо за быстрый ответ! - person Bryce; 31.08.2012