指定在factory_girl定义一个随机关联对象
-
26-09-2019 - |
题
是否有factory_girl
的方式来指定一个随机实例关联应指向?例如,我有Like
一个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
创建一堆喜欢的都具有相同的用户。我想这是有道理的......工厂被定义一次,然后再用一堆倍。
我可以使用一个序列,以力随机性;是有办法在工厂定义中定义它,或者是该序列做到这一点的最佳方式?
感谢。
解决方案
您想使用 lazy属性而不是定义被定义工厂当用户的。这将工厂代替每次使用时定义用户。
f.user { (User.all.count > 0 ? User.all.sort_by{ rand }.first : Factory.create(:user)) }
不隶属于 StackOverflow