Class: PaperTrailDiff::TraversalPreparer

Inherits:
Object
  • Object
show all
Defined in:
lib/paper_trail_diff/traversal_preparer.rb,
sig/generated/paper_trail_diff/traversal_preparer.rbs

Overview

Checks that a model can be traversed before any reconstruction starts, and that association tracking is actually available when history is involved.

Instance Method Summary collapse

Constructor Details

#initialize(tree:, traversal:) ⇒ TraversalPreparer

: (tree: AssociationTree, traversal: AssociationTraversal) -> void

Parameters:



9
10
11
12
# File 'lib/paper_trail_diff/traversal_preparer.rb', line 9

def initialize(tree:, traversal:)
  @tree = tree
  @traversal = traversal
end

Instance Method Details

#call(model_class, historical:) ⇒ void

This method returns an undefined value.

: (untyped, historical: bool) -> void

Parameters:

  • (Object)
  • historical: (Boolean)


15
16
17
18
19
20
# File 'lib/paper_trail_diff/traversal_preparer.rb', line 15

def call(model_class, historical:)
  return if @tree.empty?

  ensure_association_tracking! if historical
  @traversal.validate!(model_class)
end

#ensure_association_tracking!void

This method returns an undefined value.

: () -> void



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/paper_trail_diff/traversal_preparer.rb', line 28

def ensure_association_tracking!
  paper_trail = Object.const_get(:PaperTrail) #: untyped
  config = paper_trail.config #: untyped
  available = defined?(::PaperTrailAssociationTracking) &&
              config.respond_to?(:track_associations?) &&
              config.track_associations?
  return if available

  message = 'association tracking must be loaded and enabled to compare historical associations'
  raise AssociationTrackingUnavailableError, message
end