public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
Allow Infinity (1.0/0.0) to pass validates_numericality_of. [#354 
state:resolved]

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
ctcherry (author)
Thu Jun 05 23:26:35 -0700 2008
lifo (committer)
Wed Jul 09 05:15:07 -0700 2008
commit  124d1016fa212c008e33853912493fa9ac15d086
tree    eceaa16bb86fd58ec4555865da0b4333bdea3529
parent  96708af6a58a48c2324a3bf8d34232bc29b398c9
...
854
855
856
857
 
858
859
860
...
854
855
856
 
857
858
859
860
0
@@ -854,7 +854,7 @@ module ActiveRecord
0
             raw_value = raw_value.to_i
0
           else
0
            begin
0
-              raw_value = Kernel.Float(raw_value.to_s)
0
+              raw_value = Kernel.Float(raw_value)
0
             rescue ArgumentError, TypeError
0
               record.errors.add(attr_name, configuration[:message] || ActiveRecord::Errors.default_error_messages[:not_a_number])
0
               next
...
1391
1392
1393
 
1394
1395
1396
...
1402
1403
1404
1405
 
1406
1407
1408
1409
1410
1411
1412
 
1413
1414
1415
1416
1417
1418
 
1419
1420
1421
1422
1423
1424
1425
 
1426
1427
1428
...
1443
1444
1445
1446
 
1447
1448
1449
...
1391
1392
1393
1394
1395
1396
1397
...
1403
1404
1405
 
1406
1407
1408
1409
1410
1411
1412
 
1413
1414
1415
1416
1417
1418
 
1419
1420
1421
1422
1423
1424
1425
 
1426
1427
1428
1429
...
1444
1445
1446
 
1447
1448
1449
1450
0
@@ -1391,6 +1391,7 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
0
   INTEGERS = [0, 10, -10] + INTEGER_STRINGS
0
   BIGDECIMAL = BIGDECIMAL_STRINGS.collect! { |bd| BigDecimal.new(bd) }
0
   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"]
0
+  INFINITY = [1.0/0.0]
0
 
0
   def setup
0
     Topic.instance_variable_set("@validate_callbacks", ActiveSupport::Callbacks::CallbackChain.new)
0
@@ -1402,27 +1403,27 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
0
     Topic.validates_numericality_of :approved
0
 
0
     invalid!(NIL + BLANK + JUNK)
0
-    valid!(FLOATS + INTEGERS + BIGDECIMAL)
0
+    valid!(FLOATS + INTEGERS + BIGDECIMAL + INFINITY)
0
   end
0
 
0
   def test_validates_numericality_of_with_nil_allowed
0
     Topic.validates_numericality_of :approved, :allow_nil => true
0
 
0
     invalid!(BLANK + JUNK)
0
-    valid!(NIL + FLOATS + INTEGERS + BIGDECIMAL)
0
+    valid!(NIL + FLOATS + INTEGERS + BIGDECIMAL + INFINITY)
0
   end
0
 
0
   def test_validates_numericality_of_with_integer_only
0
     Topic.validates_numericality_of :approved, :only_integer => true
0
 
0
-    invalid!(NIL + BLANK + JUNK + FLOATS + BIGDECIMAL)
0
+    invalid!(NIL + BLANK + JUNK + FLOATS + BIGDECIMAL + INFINITY)
0
     valid!(INTEGERS)
0
   end
0
 
0
   def test_validates_numericality_of_with_integer_only_and_nil_allowed
0
     Topic.validates_numericality_of :approved, :only_integer => true, :allow_nil => true
0
 
0
-    invalid!(BLANK + JUNK + FLOATS + BIGDECIMAL)
0
+    invalid!(BLANK + JUNK + FLOATS + BIGDECIMAL + INFINITY)
0
     valid!(NIL + INTEGERS)
0
   end
0
 
0
@@ -1443,7 +1444,7 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
0
   def test_validates_numericality_with_equal_to
0
     Topic.validates_numericality_of :approved, :equal_to => 10
0
 
0
-    invalid!([-10, 11], 'must be equal to 10')
0
+    invalid!([-10, 11] + INFINITY, 'must be equal to 10')
0
     valid!([10])
0
   end
0
 

Comments