gpt4 book ai didi

ruby-on-rails - 在 factory_girl 定义中指定一个随机关联对象

转载 作者:行者123 更新时间:2023-12-02 07:51:45 26 4
gpt4 key购买 nike

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 attribute而不是在定义工厂时定义用户。这将在每次使用工厂时定义用户。

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

关于ruby-on-rails - 在 factory_girl 定义中指定一个随机关联对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com