mirror of
https://github.com/github/rails.git
synced 2026-01-26 23:08:58 -05:00
coerce blank strings to nil values for boolean and integer fields
Signed-off-by: Michael Koziarski <michael@koziarski.com>
This commit is contained in:
committed by
Michael Koziarski
parent
8622787f87
commit
aee14630d4
@@ -2572,11 +2572,14 @@ module ActiveRecord #:nodoc:
|
||||
end
|
||||
|
||||
def convert_number_column_value(value)
|
||||
case value
|
||||
when FalseClass; 0
|
||||
when TrueClass; 1
|
||||
when ''; nil
|
||||
else value
|
||||
if value == false
|
||||
0
|
||||
elsif value == true
|
||||
1
|
||||
elsif value.is_a?(String) && value.blank?
|
||||
nil
|
||||
else
|
||||
value
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -138,7 +138,11 @@ module ActiveRecord
|
||||
|
||||
# convert something to a boolean
|
||||
def value_to_boolean(value)
|
||||
TRUE_VALUES.include?(value)
|
||||
if value.blank?
|
||||
nil
|
||||
else
|
||||
TRUE_VALUES.include?(value)
|
||||
end
|
||||
end
|
||||
|
||||
# convert something to a BigDecimal
|
||||
|
||||
@@ -1420,8 +1420,8 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
|
||||
def test_validates_numericality_of_with_nil_allowed
|
||||
Topic.validates_numericality_of :approved, :allow_nil => true
|
||||
|
||||
invalid!(BLANK + JUNK)
|
||||
valid!(NIL + FLOATS + INTEGERS + BIGDECIMAL + INFINITY)
|
||||
invalid!(JUNK)
|
||||
valid!(NIL + BLANK + FLOATS + INTEGERS + BIGDECIMAL + INFINITY)
|
||||
end
|
||||
|
||||
def test_validates_numericality_of_with_integer_only
|
||||
@@ -1434,8 +1434,8 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
|
||||
def test_validates_numericality_of_with_integer_only_and_nil_allowed
|
||||
Topic.validates_numericality_of :approved, :only_integer => true, :allow_nil => true
|
||||
|
||||
invalid!(BLANK + JUNK + FLOATS + BIGDECIMAL + INFINITY)
|
||||
valid!(NIL + INTEGERS)
|
||||
invalid!(JUNK + FLOATS + BIGDECIMAL + INFINITY)
|
||||
valid!(NIL + BLANK + INTEGERS)
|
||||
end
|
||||
|
||||
def test_validates_numericality_with_greater_than
|
||||
|
||||
Reference in New Issue
Block a user