Valid hex strings aren't valid float column values, to match the integer restriction. [#4622 state:resolved]

This commit is contained in:
Jeremy Kemper 2010-05-17 07:58:26 -07:00
parent c2fb8afaa0
commit 5371242384
2 changed files with 9 additions and 4 deletions

View File

@ -57,10 +57,15 @@ module ActiveModel
protected
def parse_raw_value_as_a_number(raw_value)
begin
Kernel.Float(raw_value)
rescue ArgumentError, TypeError
case raw_value
when /\A0x/
nil
else
begin
Kernel.Float(raw_value)
rescue ArgumentError, TypeError
nil
end
end
end

View File

@ -18,7 +18,7 @@ class NumericalityValidationTest < ActiveModel::TestCase
FLOATS = [0.0, 10.0, 10.5, -10.5, -0.0001] + FLOAT_STRINGS
INTEGERS = [0, 10, -10] + INTEGER_STRINGS
BIGDECIMAL = BIGDECIMAL_STRINGS.collect! { |bd| BigDecimal.new(bd) }
JUNK = ["not a number", "42 not a number", "0xdeadbeef", "00-1", "--3", "+-3", "+3-1", "-+019.0", "12.12.13.12", "123\nnot a number"]
JUNK = ["not a number", "42 not a number", "0xdeadbeef", "0xinvalidhex", "00-1", "--3", "+-3", "+3-1", "-+019.0", "12.12.13.12", "123\nnot a number"]
INFINITY = [1.0/0.0]
def test_default_validates_numericality_of