Создание фабрики как другого класса в Ruby с FactoryGirl - PullRequest
1 голос
/ 03 января 2012

У меня есть некоторый суперкласс ActiveRecord Product и подкласс DiscountedProduct, которые используют одну и ту же таблицу, и у меня есть несколько фабрик для суперкласса, которые я хочу использовать с подклассом.

Factory(:product).class #=> Product

Что яя пытаюсь найти это сокращение для:

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

ВНИМАНИЕ: Я не использую Factory.attributes_for, так что необходимые ассоциации создаются.

  • FactoryGirl v2.3.2
  • Рельсы 3.0.4

1 Ответ

2 голосов
/ 03 января 2012

Ну, кажется, 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
    
...