class ActiveRecord::Validations::NumericalityValidator

:nodoc:

def column_precision_for(record, attribute)

def column_precision_for(record, attribute)
  record.class.type_for_attribute(attribute.to_s)&.precision
end

def column_scale_for(record, attribute)

def column_scale_for(record, attribute)
  record.class.type_for_attribute(attribute.to_s)&.scale
end

def validate_each(record, attribute, value, precision: nil, scale: nil)

:nodoc:
def validate_each(record, attribute, value, precision: nil, scale: nil)
  precision = [column_precision_for(record, attribute) || Float::DIG, Float::DIG].min
  scale     = column_scale_for(record, attribute)
  super(record, attribute, value, precision: precision, scale: scale)
end