Class: ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Jsonb

Inherits:
Json show all
Defined in:
activerecord/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb

Overview

:nodoc:

Instance Attribute Summary

Attributes inherited from ActiveModel::Type::Value

#limit, #precision, #scale

Instance Method Summary collapse

Methods inherited from Type::Internal::AbstractJson

#accessor, #deserialize, #serialize

Methods included from ActiveModel::Type::Helpers::Mutable

#cast

Methods inherited from ActiveModel::Type::Value

#==, #assert_valid_value, #binary?, #cast, #changed?, #deserialize, #hash, #initialize, #map, #serialize, #type_cast_for_schema

Constructor Details

This class inherits a constructor from ActiveModel::Type::Value

Instance Method Details

#changed_in_place?(raw_old_value, new_value) ⇒ Boolean

Returns:

  • (Boolean)

10
11
12
13
14
15
16
17
18
# File 'activerecord/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb', line 10

def changed_in_place?(raw_old_value, new_value)
  # Postgres does not preserve insignificant whitespaces when
  # round-tripping jsonb columns. This causes some false positives for
  # the comparison here. Therefore, we need to parse and re-dump the
  # raw value here to ensure the insignificant whitespaces are
  # consistent with our encoder's output.
  raw_old_value = serialize(deserialize(raw_old_value))
  super(raw_old_value, new_value)
end

#typeObject


6
7
8
# File 'activerecord/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb', line 6

def type
  :jsonb
end