Created: 2008-09-09 09:46
Updated: 2016-05-08 13:07
License: mit



A simple plugin that allows to keep history records of the users activities. Common uses could be user's wall, public timeline portlets, etc...

Scribe (From Wikipedia, the free encyclopedia): "A scribe was traditionally a person who could read and write. This usually indicated secretarial and administrative duties such as dictation and keeping business, judicial, and history records for kings, nobles, temples, and cities."



  • Run the following command:

script/plugin install git://

  • Generate the tables via the given generator:

script/generate acts_as_scribe_migration

  • And finally...

rake db:migrate

Record activities in your models

  class Comment < ActiveRecord::Base    
    record_activity_of :user

You can use any association that is related to an user:

  class Post < ActiveRecord::Base
    belongs_to :author, :class_name => "User"
    record_activity_of :author

This will register automatically a new activity when you create or destroy a new record. If you want control over the activities registration based on your model's state just use the :if option

  class Post < ActiveRecord::Base
    belongs_to :author, :class_name => "User"
    record_activity_of :author, :if => { |post| post.private == false }

If you record activities different than the default create and destroy you can specify the :actions option

  class Post < ActiveRecord::Base
    belongs_to :author, :class_name => "User"
    record_activity_of :author, :actions => [:create, :update, :destroy]

Record activities without related item

If you want to record activities not related to any specific model just use in your code:

  def grant_admin(user)
    user.admin = true, :grant_admin, user)

If the action is not related to any item, just don't use it.

  def login
    current_user = User.find(…), :login)


Copyright (c) 2008 Linking Paths, released under the MIT license

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more