我有大约15个或更少的复杂模型。我想跟踪这些变化。最简单的方法是什么?后保存/更新触发器?将日志更改为数据库
性能是很重要的,但如果有低复杂性,但降低性能的方式,我会做到这一点。
顺便说一句:我不想使用存储过程。 (虽然我可能会,如果有一个非常简单的方法来做到这一点...)
谢谢你,菲利普
我有大约15个或更少的复杂模型。我想跟踪这些变化。最简单的方法是什么?后保存/更新触发器?将日志更改为数据库
性能是很重要的,但如果有低复杂性,但降低性能的方式,我会做到这一点。
顺便说一句:我不想使用存储过程。 (虽然我可能会,如果有一个非常简单的方法来做到这一点...)
谢谢你,菲利普
有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。这使您可以在保存过程中处理对象,以便将更改记录到单独的表中。
绝对有趣......虽然我担心的复杂性,可能会影响性能和维护......在大规模应用 – Philip
好吧,我已经看到了vestal_versions,这是相当快,非常实用。 –