Module: ActiveVersion::Audits::AuditRecord::ClassMethods
- Defined in:
- lib/active_version/audits/audit_record.rb,
sig/active_version/audits.rbs
Instance Method Summary collapse
-
#add_audited_class(audited_class) ⇒ Set[Class]
Track which models use this audit class.
- #audit_action_column ⇒ Symbol?
- #audit_associated_column ⇒ Symbol?
- #audit_auditable_column ⇒ Symbol?
- #audit_changes_column ⇒ Symbol?
- #audit_column_for ⇒ Symbol?
- #audit_comment_column ⇒ Symbol?
- #audit_context_column ⇒ Symbol?
- #audit_record? ⇒ Boolean
- #audit_remote_address_column ⇒ Symbol?
- #audit_request_uuid_column ⇒ Symbol?
- #audit_storage ⇒ Symbol?
- #audit_storage_mode ⇒ Symbol?
- #audit_user_column ⇒ Symbol?
- #audit_version_column ⇒ Symbol?
- #audited_classes ⇒ Set[Class]
- #configure_audit ⇒ Object
- #dangerous_attribute_method? ⇒ Boolean
-
#initialize_serializers ⇒ Object
Initialize serializers for ActiveRecord serialize API (< Rails 8).
-
#reconstruct_attributes(audits) ⇒ Hash[Symbol | String, untyped]
Reconstruct attributes from audit history.
- #register_audit_storage_provider {|audit_class, column_name| ... } ⇒ Object
- #register_storage_provider {|audit_class, column_name| ... } ⇒ Object
- #setup_associations ⇒ Object
- #setup_serializers ⇒ Object
- #source_class ⇒ Class
- #source_identity_columns ⇒ Array[String]
- #source_name ⇒ Symbol?
- #storage_provider_for_column ⇒ Object
- #storage_provider_registry ⇒ Hash[Symbol, untyped]
Instance Method Details
#add_audited_class(audited_class) ⇒ Set[Class]
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 |
#audit_action_column ⇒ Symbol?
63 |
# File 'sig/active_version/audits.rbs', line 63
def audit_action_column: (?Symbol | String value) -> Symbol?
|
#audit_associated_column ⇒ Symbol?
70 |
# File 'sig/active_version/audits.rbs', line 70
def audit_associated_column: (?Symbol | String value) -> Symbol?
|
#audit_auditable_column ⇒ Symbol?
69 |
# File 'sig/active_version/audits.rbs', line 69
def audit_auditable_column: (?Symbol | String value) -> Symbol?
|
#audit_changes_column ⇒ Symbol?
64 |
# File 'sig/active_version/audits.rbs', line 64
def audit_changes_column: (?Symbol | String value) -> Symbol?
|
#audit_column_for ⇒ Symbol?
74 |
# File 'sig/active_version/audits.rbs', line 74
def audit_column_for: (Symbol concept) -> Symbol?
|
#audit_comment_column ⇒ Symbol?
66 |
# File 'sig/active_version/audits.rbs', line 66
def audit_comment_column: (?Symbol | String value) -> Symbol?
|
#audit_context_column ⇒ Symbol?
65 |
# File 'sig/active_version/audits.rbs', line 65
def audit_context_column: (?Symbol | String value) -> Symbol?
|
#audit_record? ⇒ Boolean
43 |
# File 'sig/active_version/audits.rbs', line 43
def audit_record?: () -> bool
|
#audit_remote_address_column ⇒ Symbol?
71 |
# File 'sig/active_version/audits.rbs', line 71
def audit_remote_address_column: (?Symbol | String value) -> Symbol?
|
#audit_request_uuid_column ⇒ Symbol?
72 |
# File 'sig/active_version/audits.rbs', line 72
def audit_request_uuid_column: (?Symbol | String value) -> Symbol?
|
#audit_storage ⇒ Symbol?
58 |
# File 'sig/active_version/audits.rbs', line 58
def audit_storage: (?Symbol | String value) -> Symbol?
|
#audit_storage_mode ⇒ Symbol?
73 |
# File 'sig/active_version/audits.rbs', line 73
def audit_storage_mode: () -> Symbol?
|
#audit_user_column ⇒ Symbol?
68 |
# File 'sig/active_version/audits.rbs', line 68
def audit_user_column: (?Symbol | String value) -> Symbol?
|
#audit_version_column ⇒ Symbol?
67 |
# File 'sig/active_version/audits.rbs', line 67
def audit_version_column: (?Symbol | String value) -> Symbol?
|
#audited_classes ⇒ Set[Class]
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 |
#configure_audit ⇒ Object
45 |
# File 'sig/active_version/audits.rbs', line 45
def configure_audit: (
|
#dangerous_attribute_method? ⇒ Boolean
44 |
# File 'sig/active_version/audits.rbs', line 44
def dangerous_attribute_method?: (Symbol | String name) -> bool
|
#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) ⇒ Hash[Symbol | String, untyped]
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 |
#register_audit_storage_provider {|audit_class, column_name| ... } ⇒ Object
60 |
# File 'sig/active_version/audits.rbs', line 60
def register_audit_storage_provider: (Symbol | String name, ?untyped provider) { (Class audit_class, String column_name) -> untyped } -> untyped
|
#register_storage_provider {|audit_class, column_name| ... } ⇒ Object
59 |
# File 'sig/active_version/audits.rbs', line 59
def register_storage_provider: (Symbol | String name, ?untyped provider) { (Class audit_class, String column_name) -> untyped } -> untyped
|
#setup_associations ⇒ Object
78 |
# File 'sig/active_version/audits.rbs', line 78
def setup_associations: () -> untyped
|
#setup_serializers ⇒ Object
79 |
# File 'sig/active_version/audits.rbs', line 79
def setup_serializers: () -> untyped
|
#source_class ⇒ Class
76 |
# File 'sig/active_version/audits.rbs', line 76
def source_class: () -> Class
|
#source_identity_columns ⇒ Array[String]
77 |
# File 'sig/active_version/audits.rbs', line 77
def source_identity_columns: () -> Array[String]
|
#source_name ⇒ Symbol?
75 |
# File 'sig/active_version/audits.rbs', line 75
def source_name: () -> Symbol?
|
#storage_provider_for_column ⇒ Object
62 |
# File 'sig/active_version/audits.rbs', line 62
def storage_provider_for_column: (Symbol | String column_name) -> untyped
|
#storage_provider_registry ⇒ Hash[Symbol, untyped]
61 |
# File 'sig/active_version/audits.rbs', line 61
def storage_provider_registry: () -> Hash[Symbol, untyped]
|