diff options
Diffstat (limited to 'activemodel/lib/active_model/type/integer.rb')
-rw-r--r-- | activemodel/lib/active_model/type/integer.rb | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/activemodel/lib/active_model/type/integer.rb b/activemodel/lib/active_model/type/integer.rb index 1ff232a977..1e1061ff60 100644 --- a/activemodel/lib/active_model/type/integer.rb +++ b/activemodel/lib/active_model/type/integer.rb @@ -19,11 +19,8 @@ module ActiveModel end def serialize(value) - result = super - if result - ensure_in_range(result) - end - result + return if value.is_a?(::String) && non_numeric_string?(value) + ensure_in_range(super) end private @@ -34,9 +31,10 @@ module ActiveModel end def ensure_in_range(value) - unless range.cover?(value) + if value && !range.cover?(value) raise ActiveModel::RangeError, "#{value} is out of range for #{self.class} with limit #{_limit} bytes" end + value end def max_value |