30 lines
1.0 KiB
Ruby
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
|