Description

The acts_as_blamable plugin stores the creator and updater of an ActiveRecord model.

Installation

gem install acts_as_blamable

Usage

Add a current_user class method to the User model, which returns for example the logged in user.

class User < ActiveRecord::Base
  def self.current_user
    ...
  end
end

class Post < ActiveRecord::Base
 acts_as_blamable
end

Add created_by and updated_by attributes to the posts table.

create_table :posts do |t|
  t.integer :created_by, :updated_by
end

Configuration

Defaults

{ :current_user_method => 'current_user', :class_name => 'User', :creator_foreign_key => :created_by, :updater_foreign_key => :updated_by }

Modify the defaults if necessary

class Person < ActiveRecord::Base
  def self.current_person
    Person.first
  end
end

class Comment < ActiveRecord::Base
  acts_as_blamable :class_name => 'Person', :creator_foreign_key => :creator_id, :updater_foreign_key => :updater_id, :current_user_method => 'current_person'
end

Specs

Tested with Ruby on Rails version: 3.0.0 and ruby version Ruby Enterprise Edition 1.8.7 build 2010.02.