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:
parent
c86a9e1096
commit
b0c66a2f92
3 changed files with 23 additions and 1 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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'
|
||||||
|
|
Loading…
Reference in a new issue