2016-04-07 6 views
0

Я использую модель не-AR с заводским методом на ней.FactoryGirl: создать фабрики для модели с методом частного класса new

class MyModel 
    include ActiveAttr::Model 

    attribute :data 
    attribute :frequency 

    def self.process_data 
    # ... 
    new(data: 'foo', frequency: 1) # e. g. 
    end 
    private_class_method :new 
end 

Завод invokation по умолчанию будет курс выдаст ошибку: частного метод `нового» призвал MyModel Существуют ли какие-либо специальные опции для завода, чтобы быть установлен для того, чтобы опустить эту ошибку?

+1

Почему вы хотите, чтобы ваш метод ': new' был приватным? –

+0

@ TheCha͢mp таким образом реализуется метод фабрики - когда вы хотите создать экземпляр объекта с различными вариантами для разных случаев. Вместо вызова с помощью нового можно было бы вызвать его с помощью 'MyModel.process_data' – DreamWalker

ответ

3

Посмотрите на initialize_with.

class A 
    class << self 
    private :new 
    end 
end 

FactoryGirl.define do 
    factory :a do 
    initialize_with { A.send :new } 
    end 
end 

FactoryGirl.build :a 
#<C:0x007ff1219f0190> 
+0

Вот и все! Спасибо. – DreamWalker

Смежные вопросы