class ActiveModel::Validations::NumericalityValidator
def prepare_value_for_validation(value, record, attr_name)
def prepare_value_for_validation(value, record, attr_name) return value if record_attribute_changed_in_place?(record, attr_name) came_from_user = :"#{attr_name}_came_from_user?" if record.respond_to?(came_from_user) if record.public_send(came_from_user) raw_value = record.public_send(:"#{attr_name}_before_type_cast") elsif record.respond_to?(:read_attribute) raw_value = record.read_attribute(attr_name) end else before_type_cast = :"#{attr_name}_before_type_cast" if record.respond_to?(before_type_cast) raw_value = record.public_send(before_type_cast) end end raw_value || value end