工厂女孩has_many在相关模型上具有不同的属性?

时间:2014-03-12 22:11:16

标签: ruby tdd factory-bot

我试图弄清楚如何创建一个工厂产品 has_many 样式,我需要那些样式工厂每个至少有一个不同的属性(除了id)。

我尝试使用create_list生成关联的工厂,然后更新其中一个的属性:

after(:create) do |product|
  products = create_list(:style, 2, product: product, color: 'Black')
  products[0].update_attribute(:color, 'Blue').save!
end

首先,这种方法不起作用。即使它是,它也不是很优雅。有没有办法创建具有不同属性的关联列表?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将一个块传递给create_list。我从来没有这样做,但这是the spec:

的一个例子
FactoryGirl.create_list(:post, 20, title: "The Listing of the Block") do |post|
  post.position = post.id
end

所以也许你可以这样做:

colors = ["red", "blue"]

after(:create) do |product|
  create_list(:style, 2, product: product) do |style|
    style.color = colors.pop #first style color will be "blue"
  end
end