Module: ActiveVersion::Audits::AuditRecord::ClassMethods

Defined in:
lib/active_version/audits/audit_record.rb,
sig/active_version/audits.rbs

Instance Method Summary collapse

Instance Method Details

#add_audited_class(audited_class) ⇒ Set[Class]

Track which models use this audit class

Parameters:

  • audited_class (Class)

Returns:

  • (Set[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_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


63
# File 'sig/active_version/audits.rbs', line 63

def audit_action_column: (?Symbol | String value) -> Symbol?

#audit_associated_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


70
# File 'sig/active_version/audits.rbs', line 70

def audit_associated_column: (?Symbol | String value) -> Symbol?

#audit_auditable_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


69
# File 'sig/active_version/audits.rbs', line 69

def audit_auditable_column: (?Symbol | String value) -> Symbol?

#audit_changes_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


64
# File 'sig/active_version/audits.rbs', line 64

def audit_changes_column: (?Symbol | String value) -> Symbol?

#audit_column_forSymbol?

Parameters:

  • concept (Symbol)

Returns:

  • (Symbol, nil)


74
# File 'sig/active_version/audits.rbs', line 74

def audit_column_for: (Symbol concept) -> Symbol?

#audit_comment_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


66
# File 'sig/active_version/audits.rbs', line 66

def audit_comment_column: (?Symbol | String value) -> Symbol?

#audit_context_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


65
# File 'sig/active_version/audits.rbs', line 65

def audit_context_column: (?Symbol | String value) -> Symbol?

#audit_record?Boolean

Returns:

  • (Boolean)


43
# File 'sig/active_version/audits.rbs', line 43

def audit_record?: () -> bool

#audit_remote_address_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


71
# File 'sig/active_version/audits.rbs', line 71

def audit_remote_address_column: (?Symbol | String value) -> Symbol?

#audit_request_uuid_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


72
# File 'sig/active_version/audits.rbs', line 72

def audit_request_uuid_column: (?Symbol | String value) -> Symbol?

#audit_storageSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


58
# File 'sig/active_version/audits.rbs', line 58

def audit_storage: (?Symbol | String value) -> Symbol?

#audit_storage_modeSymbol?

Returns:

  • (Symbol, nil)


73
# File 'sig/active_version/audits.rbs', line 73

def audit_storage_mode: () -> Symbol?

#audit_user_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


68
# File 'sig/active_version/audits.rbs', line 68

def audit_user_column: (?Symbol | String value) -> Symbol?

#audit_version_columnSymbol?

Parameters:

  • value (Symbol, String)

Returns:

  • (Symbol, nil)


67
# File 'sig/active_version/audits.rbs', line 67

def audit_version_column: (?Symbol | String value) -> Symbol?

#audited_classesSet[Class]

Returns:

  • (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_auditObject



45
# File 'sig/active_version/audits.rbs', line 45

def configure_audit: (

#dangerous_attribute_method?Boolean

Parameters:

  • name (Symbol, String)

Returns:

  • (Boolean)


44
# File 'sig/active_version/audits.rbs', line 44

def dangerous_attribute_method?: (Symbol | String name) -> bool

#initialize_serializersObject

Initialize serializers for ActiveRecord serialize API (< Rails 8). Rails 8+ relies on accessor-level serialization methods above.

Returns:

  • (Object)


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

Parameters:

  • audits (Array[untyped])

Returns:

  • (Hash[Symbol | String, untyped])


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

Parameters:

  • name (Symbol, String)
  • provider (Object)

Yields:

Yield Parameters:

  • audit_class (Class)
  • column_name (String)

Yield Returns:

  • (Object)

Returns:

  • (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

Parameters:

  • name (Symbol, String)
  • provider (Object)

Yields:

Yield Parameters:

  • audit_class (Class)
  • column_name (String)

Yield Returns:

  • (Object)

Returns:

  • (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_associationsObject

Returns:

  • (Object)


78
# File 'sig/active_version/audits.rbs', line 78

def setup_associations: () -> untyped

#setup_serializersObject

Returns:

  • (Object)


79
# File 'sig/active_version/audits.rbs', line 79

def setup_serializers: () -> untyped

#source_classClass

Returns:

  • (Class)


76
# File 'sig/active_version/audits.rbs', line 76

def source_class: () -> Class

#source_identity_columnsArray[String]

Returns:

  • (Array[String])


77
# File 'sig/active_version/audits.rbs', line 77

def source_identity_columns: () -> Array[String]

#source_nameSymbol?

Returns:

  • (Symbol, nil)


75
# File 'sig/active_version/audits.rbs', line 75

def source_name: () -> Symbol?

#storage_provider_for_columnObject

Parameters:

  • column_name (Symbol, String)

Returns:

  • (Object)


62
# File 'sig/active_version/audits.rbs', line 62

def storage_provider_for_column: (Symbol | String column_name) -> untyped

#storage_provider_registryHash[Symbol, untyped]

Returns:

  • (Hash[Symbol, untyped])


61
# File 'sig/active_version/audits.rbs', line 61

def storage_provider_registry: () -> Hash[Symbol, untyped]