class ActiveModel::Validations::NumericalityValidator
def validate_each(record, attr_name, value, precision: Float::DIG, scale: nil)
def validate_each(record, attr_name, value, precision: Float::DIG, scale: nil) unless is_number?(value, precision, scale) record.errors.add(attr_name, :not_a_number, **filtered_options(value)) return end if allow_only_integer?(record) && !is_integer?(value) record.errors.add(attr_name, :not_an_integer, **filtered_options(value)) return end value = parse_as_number(value, precision, scale) options.slice(*RESERVED_OPTIONS).each do |option, option_value| if NUMBER_CHECKS.include?(option) unless value.to_i.public_send(NUMBER_CHECKS[option]) record.errors.add(attr_name, option, **filtered_options(value)) end elsif RANGE_CHECKS.include?(option) unless value.public_send(RANGE_CHECKS[option], option_value) record.errors.add(attr_name, option, **filtered_options(value).merge!(count: option_value)) end elsif COMPARE_CHECKS.include?(option) option_value = option_as_number(record, option_value, precision, scale) unless value.public_send(COMPARE_CHECKS[option], option_value) record.errors.add(attr_name, option, **filtered_options(value).merge!(count: option_value)) end end end end