如何保证自动保存记录中的before_destroy回调顺序?

时间:2012-01-27 00:49:36

标签: ruby ruby-on-rails-3 activerecord callback

我在我的rails3应用程序中实现了audit-trail-esque系统;基本上,我想跟踪我的用户何时进行任何更改。

目前我遇到一个问题,我有两个模型 - 一个孩子到另一个孩子。伪代码如下:

class Audit;end #this is a straightforward data-storing model, trust me!  
class Parent
  has_many :children, :dependent => :destroy
  before_destroy :audit_destroy
  def audit_destroy
     Audit.create(:metadata => "some identifying data")
  end
end
class Child
  belongs_to :parent
  before_destroy :audit_destroy
  def audit_destroy
     Audit.create(:metadata => "some identifying data")
  end
end

致电

Parent.destroy

我希望使用created_at时间戳创建两个新的审核记录,这些时间戳是相对于父记录排序的。说的略有不同:父记录的审核是在儿童记录审核之前创建的。

但是,这似乎并没有得到保证,因为我还没有明确说明审计记录的创建顺序。虽然它似乎通常都适用,但我已经确认有时创建审计记录的顺序是颠倒的。

在ActiveRecord的深处是否有一些魔法围绕着创建新记录和自动保存的before_destroy回调的排序?

谢谢, 艾萨克

0 个答案:

没有答案