如果我有这个工厂:
factory :product, class: Product do
name { Faker::Commerce.product_name }
description { Faker::Lorem.paragraph }
price { Faker::Number.number(3) }
end
Run Code Online (Sandbox Code Playgroud)
我可以create_list用来创建这样的2个产品:
FactoryGirl.create_list(:product, 2)
Run Code Online (Sandbox Code Playgroud)
但我想将默认值传递给我的两个产品,我认为理论上会有这样的东西?:
prods = [{:name => "Product 1"},{:name => "Product 2"}]
FactoryGirl.create_list(:product, prods.count, prods)
Run Code Online (Sandbox Code Playgroud)
我已经搜索了一段时间而无法找到答案,是否可以使用优雅的解决方案create_list?
我想要这个解决方案的原因是因为:product是父模型的许多子关联之一.我想要一种可配置的方式,我可以通过一个FactoryGirl.create命令生成父模型工厂,并传递我想要的子关联的所有值(通过使用FactoryGirl的特征和忽略块).我希望这是有道理的.我可以在这里显示一堆代码,但我相信这提供了足够的上下文?
mhu*_*ter 10
您可以自己生成列表:
data = [{:name => "Product 1"},{:name => "Product 2"}]
products = data.map { |p| FactoryGirl.create(:product, p) }
Run Code Online (Sandbox Code Playgroud)
哪个应该留给你一系列产品.
小智 7
从v5.2.0开始你可以这样做:
twenty_somethings = create_list(:user, 10) do |user, i|
user.date_of_birth = (20 + i).years.ago
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5016 次 |
| 最近记录: |