【发布时间】:2011-11-07 16:23:41
【问题描述】:
我有大约 15 个或多或少复杂的模型。其中我想跟踪这些变化。最简单的方法是什么?保存后/更新触发器?
性能很重要,但如果有一种方法复杂度低但性能下降,我会这样做。
顺便说一句:我不想使用存储过程。 (虽然我可能会,如果有一个非常简单的方法来做到这一点......)
谢谢,菲利普
【问题讨论】:
标签: mysql ruby-on-rails activerecord ruby-on-rails-2
我有大约 15 个或多或少复杂的模型。其中我想跟踪这些变化。最简单的方法是什么?保存后/更新触发器?
性能很重要,但如果有一种方法复杂度低但性能下降,我会这样做。
顺便说一句:我不想使用存储过程。 (虽然我可能会,如果有一个非常简单的方法来做到这一点......)
谢谢,菲利普
【问题讨论】:
标签: mysql ruby-on-rails activerecord ruby-on-rails-2
有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"
【讨论】:
您可能还想查看 ActiveRecord 提供的开箱即用的Dirty objects。这使您能够在对象处于保存过程中时对其进行处理,以便您可以将更改记录到单独的表中。
【讨论】: