Module: ActiveVersion::Audits::AuditRecord::ClassMethods
- Defined in:
- lib/active_version/audits/audit_record.rb
Instance Method Summary collapse
-
#add_audited_class(audited_class) ⇒ Object
Track which models use this audit class.
- #audited_classes ⇒ Object
-
#initialize_serializers ⇒ Object
Initialize serializers for ActiveRecord serialize API (< Rails 8).
-
#reconstruct_attributes(audits) ⇒ Object
Reconstruct attributes from audit history.
Instance Method Details
#add_audited_class(audited_class) ⇒ Object
Track which models use this audit class
396 397 398 399 400 |
# File 'lib/active_version/audits/audit_record.rb', line 396 def add_audited_class(audited_class) @audited_classes ||= {} @audited_classes[name] ||= Set.new @audited_classes[name] << audited_class end |
#audited_classes ⇒ Object
402 403 404 405 |
# File 'lib/active_version/audits/audit_record.rb', line 402 def audited_classes @audited_classes ||= {} @audited_classes[name] ||= Set.new end |
#initialize_serializers ⇒ Object
Initialize serializers for ActiveRecord serialize API (< Rails 8). Rails 8+ relies on accessor-level serialization methods above.
409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 |
# File 'lib/active_version/audits/audit_record.rb', line 409 def initialize_serializers changes_column = audit_column_for(:changes) context_column = audit_column_for(:context) changes_serializer = serializer_for_column(changes_column) context_serializer = serializer_for_column(context_column) if ActiveRecord::VERSION::MAJOR >= 8 # No-op: ActiveRecord 8 removed serialize API; handled in accessors. elsif ActiveRecord::VERSION::MAJOR >= 7 && ActiveRecord::VERSION::MINOR >= 1 serialize changes_column, coder: changes_serializer serialize context_column, coder: context_serializer else serialize changes_column, changes_serializer serialize context_column, context_serializer end end |
#reconstruct_attributes(audits) ⇒ Object
Reconstruct attributes from audit history
427 428 429 430 431 432 433 |
# File 'lib/active_version/audits/audit_record.rb', line 427 def reconstruct_attributes(audits) version_column = audits.first.class.audit_column_for(:version) if audits.any? && audits.first.class.respond_to?(:audit_column_for) audits.each_with_object({}) do |audit, all| all.merge!(audit.new_attributes) all[:audit_version] = audit[version_column || :version] end end |