darcy / acts_as_loggable

Simple log utility for models. Add any number of optional arbitrary details fields, or user_id.

This URL has Read+Write access

name age message
file MIT-LICENSE Sat Apr 19 11:20:36 -0700 2008 initial commit [Darcy Brown]
file README Wed Dec 03 16:57:29 -0800 2008 updated to support grouping and owners [Darcy Brown]
file init.rb Wed Dec 03 16:57:29 -0800 2008 updated to support grouping and owners [Darcy Brown]
directory lib/ Thu Aug 20 10:18:37 -0700 2009 added an additional sort by id DESC if created_... [cavneb]
README
== acts_as_loggable

This library adds logging to an ActiveRecord model.

Inspired by acts_as_commentable.

== Usage

class Order < ActiveRecord::Base
  acts_as_loggable
  ...
end

== 1. Simple
o = Order.find(:first)
o.logs << Log.new(:message => "Credit Card Aprroved")
o.logs.first.message # => "Credit Card Aprroved"


== 2. With some details
o = Order.find(:first)
log = Log.new(:message => "Credit Card Aprroved")
log.details = [["transaction_id","TX1234"],["test",false],["foo","bar"]]
o.logs << log
o.logs.first.message # => "Credit Card Aprroved"
o.logs.first.details.first.label # => "transaction_id"
o.logs.first.details.first.detail # => "TX1234"


== 3. Adding a grouping type and an Owner
o = Order.find(:first)
o.logs << Log.new(:message => "Credit Card Aprroved", :group => 'card_approval', :user => User.find(:first), :owner => 
Store.find(:first))
o.logs.find_by_user(current_user)
o.logs.find_by_owner(current_store)
o.logs.find_by_group('card_approval')


== Database

class CreateLoggable < ActiveRecord::Migration
  def self.up
    create_table "logs" do |t|
      t.string "message"
      t.integer "loggable_id"
      t.string "loggable_type"
      t.integer "user_id"
      t.string "group"
      t.integer "owner_id"
      t.string "owner_type"
      t.timestamps
    end
    create_table "log_details" do |t|
      t.integer "log_id"
      t.string "label"
      t.text "detail"
    end
  end

  def self.down
    drop_table :logs
    drop_table :log_details
  end
end