Acts As Versioned lets you automatically store old versions of rows in a related table.
You can find out more information in chapter 4 of Practical Rails Plugins.
Author: Rick Olson
Installation:
ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/acts_as_versioned/
Example use:
class Thing < ActiveRecord::Base
acts_as_versioned
end
t = thing.create!(:doodad=>false)
t.update_attributes(:doodad=>true)
t.versions.map(&:doodad) # [false, true]