2017-05-24 1 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

관련 문제