2016-04-07 20 views
0

Üzerinde AR modeli olmayan bir fabrika yöntemi kullanıyorum. cource varsayılan fabrika invokation bir hata atmak olacaktırFactoryGirl: özel sınıf yöntemiyle yeni modeller oluşturmak için fabrikalar oluşturun

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 

: fabrika bu hatayı ihmal amacıyla ayarlanmış olması için herhangi bir özel seçenekler özel yöntem `yeni' MyModel çağrısında var mı?

+1

Neden ': new' yönteminin özel olmasını istersiniz? –

+0

@ TheCha͢mp, böyle bir yöntemle, farklı durumlar için farklı seçenekler içeren bir nesneyi örneklendirmek istediğinizde uygulanır. Yeni ile çağırmak yerine, onu "MyModel.process_data" – DreamWalker

cevap

3

initialize_with'a bakın.

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

ile başlatabiliriz. Teşekkür ederim. – DreamWalker

İlgili konular