记录更改为数据库

时间:2011-11-07 16:23:41

标签: mysql ruby-on-rails activerecord ruby-on-rails-2

我有大约15种或多或少复杂的模型。其中我想跟踪这些变化。什么是最简单的方法?保存后/更新触发器?

性能很重要,但如果有一种复杂度低但性能下降的方法,我会这样做。

顺便说一句:我不想使用存储过程。 (虽然我可能,如果有一种非常简单的方法可以这么做......)

谢谢,菲利普

2 个答案:

答案 0 :(得分:0)

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"

答案 1 :(得分:0)

您可能还想查看ActiveRecord提供的Dirty objects开箱即用。这使您能够在保存过程中处理对象,以便将更改记录到单独的表中。