2012-08-30 3 views
0

나는 다음과 같은 설정이 있습니다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에를 사용하는 것을 테스트 할 수 있습니다.

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을 실행할 때, 나는 다음과 같은 오류가 발생합니다 : 그래서 나는 다음과 같은 FactoryGirl 테스트 모델을 설정 :

can't write unknown attribute 'product_id' 

왜 이런 일이 발생하는지 알 수 없습니다. 제품 팩토리에서 product_category를 제거하면 모든 것이 작동합니다.

답변

2

마이그레이션이 잘못되었습니다 : belongs_to은 외래 키가 explained in doc이어야합니다.

+0

어, 남자, 나는 그런 단순한 오류를 범하면서 바보라고 느낍니다. 그래도 빠른 답장을 보내 주셔서 감사합니다! – Bryce