No release in over 3 years
Low commit activity in last 3 years
An extension to paper_trail, using this you can fetch actual object who was responsible for this change
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 3.2.0
~> 2.1
~> 1.6
>= 0
~> 0.8.2
>= 0
~> 3.3.0

Runtime

 Project Readme

PaperTrailGlobalid

Code Climate Build Status

This gem is an extension to paper_trail gem https://github.com/airblade/paper_trail. That means you need to pre install paper_trail gem. This gem will add one more method actor to instances of PaperTrail::Version that will return you the ActiveRecord object who was responsible for change.

Supported Rails

This Gem only support >= rails 4.1.0 and above versions.

Installation

  1. Add PaperTrailGlobalid to your Gemfile.

gem 'paper_trail-globalid'

  1. And then execute:
bundle install

Basic Usage

Basically this gem works on stroring global_id to whodunnit field of PaperTrail::Version table. As this is an additional extension installed, this will not hinder / break existing paper_trail functionalities.

widget = Widget.find 42
widget.versions               # [<PaperTrail::Version>, <PaperTrail::Version>, ...]
v = widget.versions.last

Now you can also store object to PaperTrail.whodunnit=, and if object will be instance of ActiveRecord::Base it will store the global id in the version's whodunnit column.

And you can also retrieve the actually object later just by using method actor.

admin = Admin.find(1)                       # <Admin:0x007fa2df9a5590>

PaperTrail.whodunnit = admin
PaperTrail.actor                            # <Admin:0x007fa2df9a5590> actual object

widget.update_attributes :name => 'Wibble'
widget.versions.last.whodunnit              # "gid://app/Admin/1"
widget.versions.last.actor                  # returns the actual object

Method actor will return the whodunnit value if we pass value another than ActiveRecord object.

PaperTrail.whodunnit = 'admin_name'
PaperTrail.actor                            # "admin_name"

widget.update_attributes :name => 'Wibble'
widget.versions.last.whodunnit              # "admin_name"
widget.versions.last.actor                  # "admin_name"

Contributing

  1. Fork it ( https://github.com/[my-github-username]/paper_trail-globalid/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request