1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #29249 from bradleypriest/numericality-precision-regression

Fix regression in Numericality validator
This commit is contained in:
Matthew Draper 2017-05-28 11:00:07 +09:30 committed by Rafael Mendonça França
parent c86a9e1096
commit b0c66a2f92
No known key found for this signature in database
GPG key ID: FC23B6D0F1EEE948
3 changed files with 23 additions and 1 deletions

View file

@ -1,3 +1,9 @@
* Fix regression in numericality validator when comparing Decimal and Float input
values with more scale than the schema.
*Bradley Priest*
## Rails 5.0.3 (May 12, 2017) ## ## Rails 5.0.3 (May 12, 2017) ##
* The original string assigned to a model attribute is no longer incorrectly * The original string assigned to a model attribute is no longer incorrectly

View file

@ -39,7 +39,9 @@ module ActiveModel
return return
end 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) value = parse_raw_value_as_a_number(raw_value)
end end

View file

@ -169,6 +169,20 @@ class ValidationsTest < ActiveRecord::TestCase
Topic.reset_column_information Topic.reset_column_information
end 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 def test_acceptance_validator_doesnt_require_db_connection
klass = Class.new(ActiveRecord::Base) do klass = Class.new(ActiveRecord::Base) do
self.table_name = 'posts' self.table_name = 'posts'