act_as_versioned gem may be what you are looking for - http://github.com/technoweenie/acts_as_versioned
An example of how it works with RDoc:
page = Page.create(:title => 'hello world!')
page.version
page.title = 'hello world'
page.save
page.version
page.versions.size
page.revert_to(1)
page.title
page.revert_to(page.versions.last)
page.title
page.versions.earliest
page.versions.latest
source
share