class AuditTables::Base
Attributes
audit_table_name[RW]
column[RW]
klass[RW]
table_name[RW]
Public Class Methods
new(table_name)
click to toggle source
# File lib/audit_tables/base.rb, line 6 def initialize(table_name) @table_name = table_name @audit_table_name = "audit_#{table_name}" @klass = table_name.classify.safe_constantize end
Private Instance Methods
add_new_column()
click to toggle source
# File lib/audit_tables/base.rb, line 14 def add_new_column if properties.empty? add_column audit_table_name, column.name, column_type else add_column audit_table_name, column.name, column_type, properties end end
audit_columns()
click to toggle source
# File lib/audit_tables/base.rb, line 22 def audit_columns columns(table_name).each do |column| @column = column add_new_column unless column_exists?(audit_table_name, column.name) end end
column_exists?(table_name, column_name)
click to toggle source
# File lib/audit_tables/base.rb, line 35 def column_exists?(table_name, column_name) ActiveRecord::Base.connection.column_exists?(table_name, column_name) end
column_name()
click to toggle source
# File lib/audit_tables/base.rb, line 39 def column_name column.name end
column_type()
click to toggle source
# File lib/audit_tables/base.rb, line 43 def column_type column.type end
columns(table_name)
click to toggle source
# File lib/audit_tables/base.rb, line 47 def columns(table_name) ActiveRecord::Base.connection.columns(table_name) end
create_audit_table()
click to toggle source
# File lib/audit_tables/base.rb, line 51 def create_audit_table create_table audit_table_name, id: false do |t| t.integer :audit_id, null: false t.string :audit_operation, null: false t.datetime :audit_timestamp, null: false end add_column audit_table_name, :id, klass.columns_hash['id'].type end
default()
click to toggle source
# File lib/audit_tables/base.rb, line 61 def default column.default end
limit()
click to toggle source
# File lib/audit_tables/base.rb, line 65 def limit column.limit end
null()
click to toggle source
# File lib/audit_tables/base.rb, line 69 def null column.null end
precision()
click to toggle source
# File lib/audit_tables/base.rb, line 73 def precision column.precision end
properties()
click to toggle source
# File lib/audit_tables/base.rb, line 77 def properties elements = {} elements[:limit] = limit unless limit.nil? elements[:precision] = precision unless precision.nil? elements[:scale] = scale unless scale.nil? elements[:default] = default unless default.nil? elements[:null] = null elements end
scale()
click to toggle source
# File lib/audit_tables/base.rb, line 89 def scale column.scale end
sync_audit_tables()
click to toggle source
# File lib/audit_tables/base.rb, line 30 def sync_audit_tables create_audit_table unless table_exists? audit_columns end
table_exists?()
click to toggle source
# File lib/audit_tables/base.rb, line 93 def table_exists? ActiveRecord::Base.connection.data_source_exists? audit_table_name end