Paper Trail plugin
Plugin details
Documentation
ruby script/plugin install git://github.com/airblade/paper_trail.git
Basic Usage
==================
PaperTrail is simple to use. Just add 15 characters to a model to get a paper trail of every create, update, and destroy.
class Widget < ActiveRecord::Base has_paper_trail end
This gives you a versions method which returns the paper trail of changes to your model.
>> widget = Widget.find 42 >> widget.versions # [, , ...]
Once you have a version, you can find out what happened:
>> v = widget.versions.last
>> v.event # 'update' (or 'create' or 'destroy')
>> v.whodunnit # '153' (if the update was via a controller and
# the controller has a current_user method,
# here returning the id of the current user)
>> v.created_at # when the update occurred
>> widget = v.reify # the widget as it was before the update;
# would be nil for a create event
PaperTrail stores the pre-change version of the model, unlike some other auditing/versioning plugins, so you can retrieve the original version. This is useful when you start keeping a paper trail for models that already have records in the database.
>> widget = Widget.find 153 >> widget.name # 'Doobly'
# Add has_paper_trail to Widget model.
>> widget.versions # [] >> widget.update_attributes :name => 'Wotsit' >> widget.versions.first.reify.name # 'Doobly' >> widget.versions.first.event # 'update'
This also means that PaperTrail does not waste space storing a version of the object as it currently stands. The versions method gives you previous versions; to get the current one just call a finder on your Widget model as usual.
Here's a helpful table showing what PaperTrail stores:
Event Model Before Model After create nil widget update widget widget' destroy widget nil
PaperTrail stores the values in the Model Before column. Most other auditing/versioning plugins store the After column.
Further Documentation
There is currently no advanced documentation for this plugin.
New documentationEdit plugin | (0 older versions) | Last edited by: hardway, about 1 year ago


