61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/audited/auditor.rb', line 61
def audited(options = {})
return if included_modules.include?(Audited::Auditor::AuditedInstanceMethods)
extend Audited::Auditor::AuditedClassMethods
include Audited::Auditor::AuditedInstanceMethods
class_attribute :audit_associated_with, instance_writer: false
class_attribute :audited_options, instance_writer: false
attr_accessor :audit_version, :audit_comment
self.audited_options = options
normalize_audited_options
self.audit_associated_with = audited_options[:associated_with]
if audited_options[:comment_required]
validate :presence_of_audit_comment
before_destroy :require_comment if audited_options[:on].include?(:destroy)
end
has_many :audits, -> { order(version: :asc) }, as: :auditable, class_name: Audited.audit_class.name, inverse_of: :auditable
Audited.audit_class.audited_class_names << to_s
after_create :audit_create if audited_options[:on].include?(:create)
before_update :audit_update if audited_options[:on].include?(:update)
after_touch :audit_touch if audited_options[:on].include?(:touch) && ::ActiveRecord::VERSION::MAJOR >= 6
before_destroy :audit_destroy if audited_options[:on].include?(:destroy)
define_callbacks :audit
set_callback :audit, :after, :after_audit, if: lambda { respond_to?(:after_audit, true) }
set_callback :audit, :around, :around_audit, if: lambda { respond_to?(:around_audit, true) }
enable_auditing
end
|