【问题标题】:Rails factory_girl create_list builds the same objectRails factory_girl create_list 构建相同的对象
【发布时间】:2014-04-08 21:01:29
【问题描述】:

我有以下工厂:

factory :product, class: Product do
  name        Faker::Commerce.product_name
  description Faker::Lorem.paragraph
  price       Faker::Number.number(3)
end

当我调用 FactoryGirl.create_list(:product, 3) 时,它会在数据库中插入仅具有不同 ID 的相同产品。我想为每种产品设置不同的名称、描述和价格。

你们知道解决这个问题的方法吗?谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby testing factory-bot


    【解决方案1】:

    name、description 和 price 被视为静态属性;这意味着该值只计算一次(在加载工厂时)并且永远不会改变(以及Product 的每个实例的数据相同的原因。

    相反,将值包装在一个块中:

        factory :product, class: Product do
          name        { Faker::Commerce.product_name }
          description { Faker::Lorem.paragraph }
          price       { Faker::Number.number(3) }
        end
    

    每次运行工厂时,都会执行此块 - 对于 Faker,这意味着它将生成一个新值。

    【讨论】:

    • 是的,做到了。很好的答案,我应该意识到,如果我将它包装在一个块中,它将为每个产品执行。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多