如果我有这个工厂:
factory :product, class: Product do
name { Faker::Commerce.product_name }
description { Faker::Lorem.paragraph }
price { Faker::Number.number(3) }
end
我可以使用create_list
创建2个这样的产品:
FactoryGirl.create_list(:product, 2)
但我想将默认值传递给我的两个产品,我认为理论上会有这样的东西吗?:
prods = [{:name => "Product 1"},{:name => "Product 2"}]
FactoryGirl.create_list(:product, prods.count, prods)
我已经搜索了一段时间但无法找到答案,是否可以使用像create_list
这样的优雅解决方案?
我想要这个解决方案的原因是因为:product
是父模型的许多子关联之一。我想要一种可配置的方式,我可以通过单个FactoryGirl.create
命令生成父模型工厂,并传递我想要的子关联的所有值(通过使用FactoryGirl的特征和忽略块)。我希望这是有道理的。我可以在这里显示一堆代码,但我相信这提供了足够的上下文?
答案 0 :(得分:8)
您可以自己生成列表:
data = [{:name => "Product 1"},{:name => "Product 2"}]
products = data.map { |p| FactoryGirl.create(:product, p) }
哪个应该为您提供一系列产品。
答案 1 :(得分:3)
自v5.2.0起,您可以执行以下操作:
twenty_somethings = create_list(:user, 10) do |user, i|
user.date_of_birth = (20 + i).years.ago
end