Существует 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"