我有大约 15 个或多或少复杂的模型。其中我想跟踪这些变化。最简单的方法是什么?保存后/更新触发器?
性能很重要,但如果有一种方法复杂度低但性能降低,我会这样做。
顺便说一句:我不想使用存储过程。(虽然我可能会,如果有一个非常简单的方法来做到这一点......)
谢谢,菲利普
我有大约 15 个或多或少复杂的模型。其中我想跟踪这些变化。最简单的方法是什么?保存后/更新触发器?
性能很重要,但如果有一种方法复杂度低但性能降低,我会这样做。
顺便说一句:我不想使用存储过程。(虽然我可能会,如果有一个非常简单的方法来做到这一点......)
谢谢,菲利普
您可能还想查看ActiveRecord 开箱即用提供的脏对象。这使您能够在对象正在保存的过程中使用它们,以便您可以将更改记录到单独的表中。
有verstal_versions,它似乎可以做你想做的事。
它为您指定的所有模型添加了版本控制。参见,例如:
class User < ActiveRecord::Base
versioned
validates_presence_of :name
end
然后你可以像这样使用你的模型版本:
>> u = User.create(:name => "Steve Richert")
=> #<User first_name: "Steve", last_name: "Richert">
>> u.version
=> 1
>> u.update_attribute(:name, "Stephen Richert")
=> true
>> u.name
=> "Stephen Richert"
>> u.version
=> 2
>> u.revert_to(10.seconds.ago)
=> 1
>> u.name
=> "Steve Richert"