使用FactoryGirl在Ruby中创建一个不同的工厂

时间:2012-01-03 09:03:16

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

我有一些ActiveRecord超类Product和一个子类DiscountedProduct共享同一个表,我有一些工厂用于我想要与子类一起使用的超类。

Factory(:product).class #=> Product

我想要找的是一个简写:

DiscountedProduct.create(Factory.build(:product).attributes)

注意: 我不使用Factory.attributes_for以便建立所需的关联。

  • FactoryGirl v2.3.2
  • Rails 3.0.4

1 个答案:

答案 0 :(得分:2)

好吧,看来factory_girl很好地支持了继承。

您可以通过以下方式定义工厂:

  • 作为嵌套定义

    factory :product do
      name 'Product name'
    
      factory :discounted_product do
        discounted true
      end
    end
    
  • 或作为链接定义

    factory :discounted_product :parent => :product do
      approved true
    end