是否有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)) }

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top