在factory_girl定义中指定随机关联对象

uns*_*ted 2 ruby-on-rails factory-bot

有没有办法factory_girl指定关联应该指向的随机实例?例如,我有一个和一个Like对象.我希望工厂选择一个随机的随机和一个随机的喜欢,而不是只生成一个新的.以下片段的作品:belongs_toUserSocialUnitLikeUserSocialUnit

Factory.define :like do |f|
  if User.all.count > 0
    f.user User.all.sort_by{ rand }.first
  else
    f.association :user
  end
end
Run Code Online (Sandbox Code Playgroud)

它确实选择了一个随机用户,但似乎随机用户只被选中一次,因为运行它

def create_hauls
  5.times do |i|
    Factory(:haul)
  end
end
Run Code Online (Sandbox Code Playgroud)

用同一个用户创建一堆喜欢的东西.我想这是有道理的......工厂定义一次,然后重复使用了很多次.

我可以使用序列强制随机性; 有没有办法在工厂定义中定义它,或者序列是最好的方法呢?

谢谢.

jdl*_*jdl 7

您希望使用惰性属性,而不是在定义工厂时定义用户.这将在每次使用工厂时定义用户.

f.user { (User.all.count > 0 ? User.all.sort_by{ rand }.first : Factory.create(:user)) }