class AuditLoggable::Extension::Callbacks
Attributes
ignored_attributes[R]
redacted_attributes[R]
Public Class Methods
new(except: [], redacted: [])
click to toggle source
# File lib/audit_loggable/extension.rb, line 19 def initialize(except: [], redacted: []) @ignored_attributes = ::Array.wrap(except).map(&:to_s) @redacted_attributes = ::Array.wrap(redacted).map(&:to_s) end
Public Instance Methods
after_commit(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 52 def after_commit(model) return if model.audit_loggable_audit_record_set.blank? persist_audit_record_set(model) end
after_create(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 24 def after_create(model) changeset = build_changeset_for_create(model) audit_record = build_audit_record(model, :create, changeset) add_audit_record(model, audit_record) end
after_destroy(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 39 def after_destroy(model) changeset = build_changeset_for_destroy(model) audit_record = build_audit_record(model, :destroy, changeset) add_audit_record(model, audit_record) end
after_rollback(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 46 def after_rollback(model) return if model.audit_loggable_audit_record_set.blank? clear_audit_record_set(model) end
after_update(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 31 def after_update(model) changeset = build_changeset_for_update(model) return if changeset.blank? audit_record = build_audit_record(model, :update, changeset) add_audit_record(model, audit_record) end
Private Instance Methods
add_audit_record(model, audit_record)
click to toggle source
# File lib/audit_loggable/extension.rb, line 82 def add_audit_record(model, audit_record) model.audit_loggable_audit_record_set ||= AuditRecordSet.new model.audit_loggable_audit_record_set << audit_record end
build_audit_record(model, action, changeset)
click to toggle source
# File lib/audit_loggable/extension.rb, line 74 def build_audit_record(model, action, changeset) user = Store.current_user address = Store.current_remote_address uuid = Store.current_request_uuid AuditRecord.new(model, user, action, changeset, address, uuid) end
build_changeset_for_create(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 62 def build_changeset_for_create(model) ChangeSet::Create.new(model, ignored_attributes: ignored_attributes, redacted_attributes: redacted_attributes) end
build_changeset_for_destroy(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 70 def build_changeset_for_destroy(model) ChangeSet::Destroy.new(model, ignored_attributes: ignored_attributes, redacted_attributes: redacted_attributes) end
build_changeset_for_update(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 66 def build_changeset_for_update(model) ChangeSet::Update.new(model, ignored_attributes: ignored_attributes, redacted_attributes: redacted_attributes) end
clear_audit_record_set(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 87 def clear_audit_record_set(model) model.audit_loggable_audit_record_set.clear end
persist_audit_record_set(model)
click to toggle source
# File lib/audit_loggable/extension.rb, line 91 def persist_audit_record_set(model) model.audit_loggable_audit_record_set.flush end