[rails]FactoryGirl::AssociationDefinitionError: Self-referencing association
FactoryGirl::AssociationDefinitionError: Self-referencing association
のエラーが出た時はFactoryGirl周りのどこかで自己参照が発生してしまっているようです。
例えば、Hogeクラスにクラス名と同名のhogeというカラムも存在している場合に、以下のようなコードを書いたりすると上記のエラーが発生します。
FactoryGirl.define do
sequence :hoge do |n| <= :hogeを使ってる
"test#{n}"
end
factory :hoge do # <= ここでも使ってる
hoge
end
end
sequenceとfactoryで同じ名前を使っているのが原因なので、factoryの名前を変えるなりして対応するとエラーが消えます。
FactoryGirl.define do
sequence :hoge do |n|
"test#{n}"
end
factory :alt_hoge, class: Hoge do <= 別名に変更
hoge
end
end
10/22追記 ↑より、↓のようにsequence設定をfactory設定内に移動したほうがシンプルでいい気がしました。 共通で使うようなsequenceだったら↑のようにして別ファイルにまとめておく、とかがいいんですかね。
FactoryGirl.define do
factory :hoge do
sequence(:hoge) { |n| "test#{n}" } <= factory内に移動
end
end