factory_girl定義でランダムな関連オブジェクトを指定します
-
26-09-2019 - |
質問
協会が指すべきであるとのランダムなインスタンスを指定するfactory_girl
における方法はありますか?例えば、私は1 Like
と1 belongs_to
をUser
SocialUnit
オブジェクトを持っています。私はちょうど新しいものを生成するのではなく、ランダム既存Like
等にランダムUser
を選択するSocialUnit
のための工場をしたいです。下記のソート作品の抜粋ます:
Factory.define :like do |f|
if User.all.count > 0
f.user User.all.sort_by{ rand }.first
else
f.association :user
end
end
それは確かにランダムなユーザーを選び、それは、一度だけ選んますランダムユーザーのように思えるこの
を実行しているので、def create_hauls
5.times do |i|
Factory(:haul)
end
end
は、すべて同じユーザーと同類の束を作成します。私は工場出荷時には一度定義した後、時間の束を再利用します...それは理にかなっていると思います。
私は力のランダムにシーケンスを使用することができます。ファクトリの定義の中に、それを定義する方法があり、またはそれを行うための最善の方法は、シーケンスはありますか?
感謝します。
解決
あなたは、工場が定義されている場合、ユーザー定義のの代わりに怠惰な属性を使用します。これはユーザに工場が代わりに使用されるたびに定義します。
f.user { (User.all.count > 0 ? User.all.sort_by{ rand }.first : Factory.create(:user)) }
所属していません StackOverflow