如何打印FactoryGirl.create进行的Model.create调用?

时间:2016-03-19 10:25:57

标签: ruby-on-rails ruby rails-activerecord factory-bot

有没有办法打印FactoryGirl.create调用的ActiveRecord操作?

假设我们有一个模型:foo的工厂Foo。运行FactoryGirl.create(:foo),为模型Foo创建数据库条目,为不同模型创建一些其他条目,例如BarCar等。

我们有什么方法可以将此FactoryGirl.create(:foo)命令转换为其基础Model.create命令?

例如

FactoryGirl.create(:foo)

应该进入

Foo.create(name: 'some name', ...)
Bar.create(field_value: 'asdf', ....)
Car.create(field_value: 'asdf1231', ....)
...

1 个答案:

答案 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}}

这适用于简单属性。复杂属性可能需要更复杂的参数打印。试试吧,看看。