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 surprise 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
40
41
42
43
44
# 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
  column_type = @version_model_class.columns_hash["object_changes"].type
  case column_type
  when :jsonb
    jsonb
  when :json
    json
  else
    raise UnsupportedColumnType.new(
      method: "where_object_changes",
      expected: "json or jsonb",
      actual: column_type
    )
  end
end