X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/33021029867be4a2240f0d3673045dfac7598350..6c78b28f9f54664babc57a4b4372c502065ed5d1:/services/api/app/models/jsonb_type.rb diff --git a/services/api/app/models/jsonb_type.rb b/services/api/app/models/jsonb_type.rb index 2011dcec86..02746f64d4 100644 --- a/services/api/app/models/jsonb_type.rb +++ b/services/api/app/models/jsonb_type.rb @@ -7,13 +7,22 @@ class JsonbType # some other default value. class WithDefault < ActiveModel::Type::Value include ActiveModel::Type::Helpers::Mutable - @@default_value = nil + + def default_value + nil + end + + def changed_in_place?(raw_old_value, value) + # Compare deserialized values for correctness, checking serialized values + # may include changes in ordering, inline whitespaces, etc. + deserialize(raw_old_value) != value + end def deserialize(value) if value.nil? - @@default_value + self.default_value elsif value.is_a?(::String) - SafeJSON.load(value) rescue @@default_value + SafeJSON.load(value) rescue self.default_value else value end @@ -21,7 +30,7 @@ class JsonbType def serialize(value) if value.nil? - @@default_value + self.default_value else SafeJSON.dump(value) end @@ -29,10 +38,14 @@ class JsonbType end class Hash < JsonbType::WithDefault - @@default_value = {} + def default_value + {} + end end class Array < JsonbType::WithDefault - @@default_value = [] + def default_value + [] + end end end \ No newline at end of file