lib/ar-audit-tracer.rb
# encoding: utf-8
require 'active_record/migration/command_recorder'
require 'active_record/author_stamp'
require 'concern/audit/author'
module ActiveRecord
module ConnectionAdapters
module SchemaStatements
# Adds author columns (created_by and updated_by) to the named table.
# ===== Examples
# add_authors(:suppliers)
def add_authorstamps(table_name, type=:string, *args)
options = {:null => false}.merge(args.extract_options!)
add_column table_name, :created_by, type, options
add_column table_name, :updated_by, type, options
end
# Removes the author columns (created_by and updated_by) from the table definition.
# ===== Examples
# remove_authors(:suppliers)
def remove_authorstamps(table_name)
remove_column table_name, :updated_by
remove_column table_name, :created_by
end
end
class TableDefinition
# Creates author columns ...
#
# @param Symbol type The desired type for the columns, defaults to :string
# @param Hash *args Column options from rails
def authorstamps(type=:string, *args)
options = args.extract_options!
column(:created_by, type, options)
column(:updated_by, type, options)
end
end
class Table
# Adds author (created_by and updated_by) columns to the table
# ===== Example
# t.authors
#
# @param Symbol type The desired type for the columns, defaults to :string
# @see SchemaStatements#add_authors
def authorstamps(type=:string, *args)
options = {:null => false}.merge(args.extract_options!)
@base.add_authorstamps(@table_name, type, options)
end
# Removes the author columns (created_by and updated_by) from the table.
# ===== Example
# t.remove_authors
def remove_authorstamps
@base.remove_authorstamps(@table_name)
end
end
end
Base.class_eval do
include ActiveRecord::AuthorStamp
end
end