module AuditModel::Models::Helpers::ClassMethods

Public Instance Methods

auditable(options = {}) click to toggle source
# File lib/audit_model/models/helpers.rb, line 7
def auditable(options = {}) 
  send :include, InstanceMethods
  class_attribute :audit_enabled, instance_writer: false
  options[:on] ||= [:create, :update, :destroy]
  setup_callbacks options[:on]
  setup_model
  setup_associations

  send :enable_audit
end
disable_audit() click to toggle source
# File lib/audit_model/models/helpers.rb, line 26
def disable_audit
  self.audit_enabled = false
end
enable_audit() click to toggle source
# File lib/audit_model/models/helpers.rb, line 30
def enable_audit
  self.audit_enabled = true
end
without_audit() { || ... } click to toggle source
# File lib/audit_model/models/helpers.rb, line 18
def without_audit 
  cache = audit_enabled
  disable_audit
  yield
ensure
  enable_audit if cache
end

Private Instance Methods

audit_class() click to toggle source
# File lib/audit_model/models/helpers.rb, line 62
def audit_class 
  "#{name}Audit"
end
callback_on_create() click to toggle source
# File lib/audit_model/models/helpers.rb, line 50
def callback_on_create
  after_create :audit_on_create
end
callback_on_destroy() click to toggle source
# File lib/audit_model/models/helpers.rb, line 58
def callback_on_destroy
  after_destroy :audit_on_destroy
end
callback_on_update() click to toggle source
# File lib/audit_model/models/helpers.rb, line 54
def callback_on_update
  before_update :audit_on_update
end
setup_associations() click to toggle source
# File lib/audit_model/models/helpers.rb, line 45
def setup_associations
  has_many :revisions, as: :model, class_name: "AuditModel::Models::Revision"
  has_many :audits, through: :revisions, source: :audit, source_type: audit_class
end
setup_callbacks(options_on = []) click to toggle source
# File lib/audit_model/models/helpers.rb, line 35
def setup_callbacks(options_on = [])
  options_on.each do |option|
    send "callback_on_#{option}"
  end
end
setup_model() click to toggle source
# File lib/audit_model/models/helpers.rb, line 41
def setup_model
  Object.const_set audit_class, Class.new(Models::Base)
end