2017-05-24 5 views
0

私は、オブジェクトのインスタンス化中に複数のパラメータが初期化に渡されるモデルを持っています。方法は、私はfactorygirlですべてを実行する方法をスキップすることができますか?初期化で工場ガールトラブル

私のモデルファイルを以下に示します。

class WebResponseCache < ActiveRecord::Base 
    validates_presence_of :q, :results 

    self.table_name = "web_response_cache" 

    def initialize(q, results) 
    super() 
    self.q = q 
    self.results = results 
    end 

私の工場の女の子のコードを以下に示します。それはコンストラクタであるよう

FactoryGirl.define do  
    factory :google_web_response_cache, :class => WebResponseCache do 
    initialize_with { new('query', 'results') } 
    end 
end 
+0

このファクトリを使用する際にエラーがありますか?なぜこのメソッドをスキップしたいのですか? –

答えて

2

あなたは、実行され得ることから、このメソッドをスキップすることはできません。しかし、パラメータを不要にするために変更することができます。

def initialize(attrs = nil) 
    super() 
    return unless attrs 

    self.q = attrs[:q] 
    self.results = attrs[:results] 
    end 

今、あなたは

WebResponseCache.new # no params passed 
WebResponseCache.new(q: 'query', results: 'results') # will be initialized with given params 

を行うことができますそして今、あなたはあなたの工場でinitialize_withブロックを必要としません。

+0

悪くない....... – som4ik

関連する問題