Sha256: 9bd55deb856840e44c2f33269d69579012e175961e23525a02a475135a0806c7

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

module RailsAudit::ControllerHelper

  def mark_audits(**options)
    record_classes = options.select { |k, _|
      record_class = k.to_s.safe_constantize
      record_class && record_class.ancestors.include?(ActiveRecord::Base)
    }

    record_classes.each do |record_symbol, includes|
      record_class = record_symbol.to_s.constantize
      valid_ivars.find do |ivar|
        record = instance_variable_get(ivar)
        if record.is_a? record_class
          record.save_audits current_operator: rails_audit_user,
                             include: includes,
                             note: options[:note],
                             controller_path: controller_path,
                             action_name: action_name,
                             remote_ip: request.remote_ip,
                             extra: options[:extra]
        end
      end
    end
  end

  def rails_audit_user
    current_user
  end

  def valid_ivars
    _except = self._protected_ivars.to_a + [:@marked_for_same_origin_verification]
    self.instance_variables - _except
  end

end

ActiveSupport.on_load :action_controller_base do
  include RailsAudit::ControllerHelper
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rails_audit-1.0.3 lib/rails_audit/controller_helper.rb
rails_audit-1.0.2 lib/rails_audit/controller_helper.rb
rails_audit-1.0.1 lib/rails_audit/controller_helper.rb
rails_audit-1.0.0 lib/rails_audit/controller_helper.rb
rails_audit-0.0.1 lib/rails_audit/controller_helper.rb