如果我有这个工厂,
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的特性和忽略块)。我希望这能让人明白。我可以在这里展示一堆代码,但我相信这能提供足够的上下文?
你可以自己生成列表。
data = [{:name => "Product 1"},{:name => "Product 2"}]
products = data.map { |p| FactoryGirl.create(:product, p) }
你应该会得到一个产品的数组。
因为 v5.2.0 你可以这样做。
twenty_somethings = create_list(:user, 10) do |user, i|
user.date_of_birth = (20 + i).years.ago
end