Files
Reem-Notas/app/models/auditoria_log.rb

30 lines
1.0 KiB
Ruby

# app/models/auditoria_log.rb
class AuditoriaLog < ApplicationRecord
belongs_to :user, optional: true # opcional caso user seja deletado
ACOES = %w[criar editar finalizar arquivar excluir login logout].freeze
validates :acao, presence: true
validates :entidade, presence: true
scope :recentes, -> { order(created_at: :desc) }
scope :por_user, ->(user_id) { where(user_id: user_id) }
scope :por_entidade, ->(entidade) { where(entidade: entidade) }
def self.registrar(user:, acao:, entidade:, entidade_id: nil,
dados_anteriores: {}, dados_novos: {}, request: nil)
create!(
user_id: user&.id,
acao: acao.to_s,
entidade: entidade.to_s,
entidade_id: entidade_id,
dados_anteriores: dados_anteriores,
dados_novos: dados_novos,
ip_address: request&.remote_ip,
user_agent: request&.user_agent
)
rescue => e
Rails.logger.error("[AuditoriaLog] Erro ao registrar: #{e.message}")
end
end