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) ##
|
||||
|
||||
* The original string assigned to a model attribute is no longer incorrectly
|
||||
|
|
|
@ -39,7 +39,9 @@ module ActiveModel
|
|||
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
|
||||
|
||||
|
|
|
@ -169,6 +169,20 @@ class ValidationsTest < ActiveRecord::TestCase
|
|||
Topic.reset_column_information
|
||||
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'
|
||||
|
|
Loading…
Reference in a new issue