From 20440fd8700e1eb9725ffa0e85d458a81b519dd2 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 2 Feb 2012 14:40:58 -0800 Subject: return early from typecasting if the value is nil --- .../active_record/connection_adapters/postgresql/oid.rb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb index 08cfa8dd69..bb2a5c0122 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb @@ -25,6 +25,8 @@ module ActiveRecord class Money def type_cast(value) + return if value.nil? + # Because money output is formatted according to the locale, there are two # cases to consider (note the decimal separators): # (1) $12,345,678.12 @@ -62,18 +64,24 @@ module ActiveRecord class Integer def type_cast(value) - value.to_i + return if value.nil? + + value.to_i rescue value ? 1 : 0 end end class Boolean def type_cast(value) + return if value.nil? + ConnectionAdapters::Column.value_to_boolean value end end class Timestamp def type_cast(value) + return if value.nil? + # FIXME: probably we can improve this since we know it is PG # specific ConnectionAdapters::Column.string_to_time value @@ -82,6 +90,8 @@ module ActiveRecord class Date def type_cast(value) + return if value.nil? + # FIXME: probably we can improve this since we know it is PG # specific ConnectionAdapters::Column.value_to_date value @@ -90,6 +100,8 @@ module ActiveRecord class Time def type_cast(value) + return if value.nil? + # FIXME: probably we can improve this since we know it is PG # specific ConnectionAdapters::Column.string_to_dummy_time value @@ -98,6 +110,8 @@ module ActiveRecord class Float def type_cast(value) + return if value.nil? + value.to_f end end -- cgit v1.2.3