我在我的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回调的排序?
谢谢, 艾萨克