1 # Copyright (C) The Arvados Authors. All rights reserved.
3 # SPDX-License-Identifier: AGPL-3.0
6 # Emulate pre-rails5.0 behavior by having a interpreting NULL/nil as
7 # some other default value.
8 class WithDefault < ActiveModel::Type::Value
9 include ActiveModel::Type::Helpers::Mutable
15 def changed_in_place?(raw_old_value, value)
16 # Compare deserialized values for correctness, checking serialized values
17 # may include changes in ordering, inline whitespaces, etc.
18 deserialize(raw_old_value) != value
21 def deserialize(value)
24 elsif value.is_a?(::String)
25 SafeJSON.load(value) rescue self.default_value
40 class Hash < JsonbType::WithDefault
46 class Array < JsonbType::WithDefault