当你执行activeRecord.save时,事务提交还是当方法退出时?

时间:2011-06-06 15:17:22

标签: ruby-on-rails ruby

在Rails 3中,当你执行activeRecord.save时,事务提交还是方法退出的时候?

所以我想弄清楚的是,如果MySQL是在保存后立即编写的!或者在我退出定义黑色

后保存
def something
  1000.times do
       o = Order.new(:name => "Tomas")
       o.save
  end
end 

1 个答案:

答案 0 :(得分:4)

你应该读一下ActiveRecord object callback chain;它解释了你的物体在引擎盖下发生了什么。

基本上,当你调用save时,ActiveRecord :: Base对象将按照文档列出的顺序遍历所有回调,你可以看到提交的位置(在我写这篇文章时的步骤6和7之间) )。 ActiveRecord甚至会在提交发生后公开回调,以防您在确定已经将某些内容提交到数据库时想要一些条件逻辑,但通常我们相信如果save返回true,一切都很好。

因此,为了明确回答您的问题,在保存调用期间提交,而不是在退出方法时。