Method: AuditLog.audit!

Defined in:
lib/audit-log.rb

.audit!(action, record = nil, payload: nil, user: nil, request: nil) ⇒ Object

Create an audit log

AuditLog.audit!(:edit_account, @account, payload: account_params, user: current_user)



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/audit-log.rb', line 29

def audit!(action, record = nil, payload: nil, user: nil, request: nil)
  ActiveSupport::Notifications.instrument('audit.audit_log', action: action) do
    request_info = {}
    if request
      request_info = {
        request_id: request.request_id,
        ip: request.remote_ip,
        url: request.url,
        user_agent: request.user_agent
      }
    end

    # Set nil if record is a new_record, do this for avoid create record.
    record = nil if record&.new_record?

    Rails.logger.silence do
      AuditLog::Log.create!(
        action: action,
        record: record,
        payload: (payload || {}).to_h.deep_stringify_keys,
        user: user,
        request: request_info.deep_stringify_keys
      )
    end
  end
end