工場勤務の女の子の初心者:既存のファクトリを関連付けとして呼び出す (作成しない)
-
26-09-2019 - |
質問
他の工場との連携を伴う工場女子工場がいくつかあります。例えば:
FactoryGirl.define do
factory :user do |f|
f.sequence(:email) { |n| "user#{n}@example.com" }
f.password "foobar"
f.password_confirmation { |u| u.password }
f.role_id 2
f.association :role, :factory => :role
end
end
問題は、Factory(:user) を 2 回呼び出すと重複エラーが発生することです (role.name 列には一意性の制約があります)。
そこで質問は次のとおりです。上記で :role ファクトリがまだ存在しない場合は作成し、存在しない場合は既存のものを使用するように指定するにはどうすればよいですか?
解決
なぜあなたは工場出荷時のロール名にシーケンスを使用してはいけません。例えば
のようにロール名のシーケンスを定義しますFactoryGirl.sequence :role_name do |n|
"role#{n}"
end
と
のように工場の役割を定義します factory.role do |role|
f.name Factory.next :role_name
end
これを行うことにより、それぞれの時間は、新しい役割が作成されますが、異なるROLE_NAMEとなります。あなたは、各テストにおける役割を作成することにより、Factory.buildにロールを渡すことができます。しかし、私はその面倒を見つけます。
所属していません StackOverflow