Module: ActiveRecord::Acts::Versioned
- Defined in:
- vendor/plugins/acts_as_versioned/lib/acts_as_versioned.rb
Overview
Specify this act if you want to save a copy of the row in a versioned table. This assumes there is a versioned table ready and that your model has a version field. This works with optimistic locking if the lock_version column is present as well.
The class for the versioned model is derived the first time it is seen. Therefore, if you change your database schema you have to restart your container for the changes to be reflected. In development mode this usually means restarting WEBrick.
class Page < ActiveRecord::Base # assumes pages_versions table acts_as_versioned end
Example:
page = Page.create(:title => 'hello world!') page.version # => 1 page.title = 'hello world' page.save page.version # => 2 page.versions.size # => 2 page.revert_to(1) # using version number page.title # => 'hello world!' page.revert_to(page.versions.last) # using versioned instance page.title # => 'hello world' page.versions.earliest # efficient query to find the first version page.versions.latest # efficient query to find the most recently created version
Simple Queries to page between versions
page.versions.before(version) page.versions.after(version)
Access the previous/next versions from the versioned model itself
version = page.versions.latest version.previous # go back one version version.next # go forward one version
See ActiveRecord::Acts::Versioned::ClassMethods#acts_as_versioned for configuration options
Defined Under Namespace
Modules: ActMethods, ClassMethods
Constant Summary
- CALLBACKS =
[:set_new_version, :save_version_on_create, :save_version?, :clear_altered_attributes]
Class Method Summary
-
+ (Object) included(base)
:nodoc:.
Class Method Details
+ (Object) included(base)
:nodoc:
70 71 72 |
# File 'vendor/plugins/acts_as_versioned/lib/acts_as_versioned.rb', line 70 def self.included(base) # :nodoc: base.extend ClassMethods end |