# 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