有没有办法打印FactoryGirl.create调用的ActiveRecord操作?
假设我们有一个模型:foo
的工厂Foo
。运行FactoryGirl.create(:foo)
,为模型Foo
创建数据库条目,为不同模型创建一些其他条目,例如Bar
,Car
等。
我们有什么方法可以将此FactoryGirl.create(:foo)
命令转换为其基础Model.create
命令?
例如
FactoryGirl.create(:foo)
应该进入
Foo.create(name: 'some name', ...)
Bar.create(field_value: 'asdf', ....)
Car.create(field_value: 'asdf1231', ....)
...
答案 0 :(得分:3)
factory_girl在创建模型时调用save!
,因此您可以通过覆盖每个模型中的config/initializers/print_model_save.rb
来至少获得部分方式。把它放在class ActiveRecord::Base
alias_method :original_save!, :save!
def save!
puts "#{self.class.name}.create! #{attributes.symbolize_keys.inspect}"
original_save!
end
end
:
{{1}}
这适用于简单属性。复杂属性可能需要更复杂的参数打印。试试吧,看看。