Class: PaperTrail::Queries::Versions::WhereObjectChanges Private

Inherits:
Object
  • Object
show all
Defined in:
lib/paper_trail/queries/versions/where_object_changes.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

For public API documentation, see ‘where_object_changes` in `paper_trail/version_concern.rb`.

Instance Method Summary collapse

Constructor Details

#initialize(version_model_class, attributes) ⇒ WhereObjectChanges

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

  • version_model_class - The class that VersionConcern was mixed into.

  • attributes - A ‘Hash` of attributes and values. See the public API documentation for details.



14
15
16
17
18
19
20
21
22
# File 'lib/paper_trail/queries/versions/where_object_changes.rb', line 14

def initialize(version_model_class, attributes)
  @version_model_class = version_model_class

  # Currently, this `deep_dup` is necessary because the `jsonb` branch
  # modifies `@attributes`, and that would be a nasty suprise for
  # consumers of this class.
  # TODO: Stop modifying `@attributes`, then remove `deep_dup`.
  @attributes = attributes.deep_dup
end

Instance Method Details

#executeObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/paper_trail/queries/versions/where_object_changes.rb', line 25

def execute
  if PaperTrail.config.object_changes_adapter&.respond_to?(:where_object_changes)
    return PaperTrail.config.object_changes_adapter.where_object_changes(
      @version_model_class, @attributes
    )
  end
  case @version_model_class.columns_hash["object_changes"].type
  when :jsonb
    jsonb
  when :json
    json
  else
    text
  end
end