我有一个模型,其中在对象实例化期间将多个参数传递给初始化。有没有办法让我可以跳过这个方法在工厂里完全执行。
我的模型文件如下所示:
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 :(得分:3)
你不能跳过这个方法来执行,因为它是构造函数。但您可以更改它以使参数不必要。
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
阻止。