class ActiveModel::Type::Value

def changed?(old_value, new_value, _new_value_before_type_cast)

override this method.
and +new_value+ will always be type-cast. Types should not need to
Determines whether a value has changed for dirty checking. +old_value+
def changed?(old_value, new_value, _new_value_before_type_cast)
  old_value != new_value
end