Mysql 记录对数据库的更改

Mysql 记录对数据库的更改,mysql,ruby-on-rails,activerecord,ruby-on-rails-2,Mysql,Ruby On Rails,Activerecord,Ruby On Rails 2,我有大约15个或多或少复杂的模型。我想跟踪这些变化。最简单的方法是什么?保存/更新触发器之后 性能很重要,但如果有一种方法复杂度低但性能下降,我会这样做 顺便说一下:我不想使用存储过程。(如果有一个简单的方法,我可能会这样做……) 谢谢,Philip,有一个,它似乎做了你想做的事 它为您指定的所有模型添加版本管理。例如,见: class User < ActiveRecord::Base versioned validates_presence_of :name end cla

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

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

顺便说一下:我不想使用存储过程。(如果有一个简单的方法,我可能会这样做……)

谢谢,Philip,有一个,它似乎做了你想做的事

它为您指定的所有模型添加版本管理。例如,见:

class User < ActiveRecord::Base
  versioned

  validates_presence_of :name
end
class用户
然后,您可以像这样使用模型的版本:

>> 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"
u=User.create(:name=>“Steve Richert”) => # >>美国版 => 1 >>u.update_属性(:名称,“Stephen Richert”) =>正确 >>美国名称 =>“斯蒂芬·里切特” >>美国版 => 2 >>恢复到(10秒前) => 1 >>美国名称 =>“Steve Richert”
您可能还需要查看由ActiveRecord提供的开箱即用功能。这使您能够在保存对象的过程中处理对象,以便您可以将更改记录到单独的表中。

非常有趣。。。虽然我担心复杂性可能会影响性能和维护…我在大型应用程序中见过vestal_版本,但它速度非常快,可用性非常好。脏对象也存在于2.x中。看见我的理解是,它们的工作原理与Ar3+中的工作原理基本相同。