FactoryGirlは初めてです。私は備品の世界から来ました。
私は次の2つのモデルを持っています:
class LevelOneSubject < ActiveRecord::Base
has_many :level_two_subjects, :inverse_of => :level_one_subject
validates :name, :presence => true
end
class LevelTwoSubject < ActiveRecord::Base
belongs_to :level_one_subject, :inverse_of => :level_two_subjects
validates :name, :presence => true
end
そして、私は工場で次のようなことをしたいと思います:
FactoryGirl.define do
factory :level_one_subject, class: LevelOneSubject do
factory :social_sciences do
name "Social Sciences"
end
end
factory :level_two_subject do
factory :anthropology, class: LevelTwoSubject do
name "Anthropology"
association :level_one_subject, factory: social_sciences
end
factory :archaelogy, class: LevelTwoSubject do
name "Archaelogy"
association :level_one_subject, factory: social_sciences
end
end
end
次に、次のような仕様でファクトリを使用すると、次のようになります。
it 'some factory test' do
anthropology = create(:anthropology)
end
エラーが発生します:
NoMethodError: undefined method `name' for :anthropology:Symbol
誰かがここで助けることができますか?
工場で関連付けを設定しない場合、このエラーは発生しませんが、level_one_subject_id
存在する必要のあるエラーが発生し、次のテストコードのみが機能します。
it 'some factory test' do
social_sciences = create(:social_sciences)
anthropology = create(:anthropology, :level_one_subject_id => social_sciences.id)
end
しかし、私は本当に協会のある工場が機能しない理由を知りたいです。フィクスチャを使用すると、これらすべてを無料で手に入れることができました。