Permalink
Browse files

Fix regression in Numericality validator where extra decimal places on

a user input for a decimal column were ignored by numerically validations
  • Loading branch information...
bradleypriest committed May 27, 2017
1 parent fcc47bc commit d83b8e65102d625c9024cd9a2727a10b0ef83b79
@@ -1,3 +1,8 @@
* Fix regression in numericality validator when comparing Decimal and Float input
values with more scale than the schema.
*Bradley Priest*
* Fix methods `#keys`, `#values` in `ActiveModel::Errors`.
Change `#keys` to only return the keys that don't have empty messages.
@@ -36,7 +36,9 @@ def validate_each(record, attr_name, value)
return
end
unless raw_value.is_a?(Numeric)
if raw_value.is_a?(Numeric)
value = raw_value
else
value = parse_raw_value_as_a_number(raw_value)
end
@@ -167,6 +167,20 @@ def test_numericality_validation_with_mutation
assert topic.valid?
end
def test_numericality_validation_checks_against_raw_value
klass = Class.new(Topic) do
def self.model_name
ActiveModel::Name.new(self, nil, "Topic")
end
attribute :wibble, :decimal, scale: 2, precision: 9
validates_numericality_of :wibble, greater_than_or_equal_to: BigDecimal.new("97.18")
end
assert_not klass.new(wibble: "97.179").valid?
assert_not klass.new(wibble: 97.179).valid?
assert_not klass.new(wibble: BigDecimal.new("97.179")).valid?
end
def test_acceptance_validator_doesnt_require_db_connection
klass = Class.new(ActiveRecord::Base) do
self.table_name = "posts"

0 comments on commit d83b8e6

Please sign in to comment.