aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb11
1 files changed, 6 insertions, 5 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb b/activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb
index 6329733abc..61e5e76f83 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb
@@ -83,9 +83,10 @@ module ActiveRecord
def type_cast(value, column, array_member = false)
return super(value, column) unless column
+ sql_type = type_to_sql(column.type, column.limit, column.precision, column.scale)
case value
when Range
- return super(value, column) unless /range$/ =~ column.sql_type
+ return super(value, column) unless /range$/ =~ sql_type
PostgreSQLColumn.range_to_string(value)
when NilClass
if column.array && array_member
@@ -96,23 +97,23 @@ module ActiveRecord
super(value, column)
end
when Array
- case column.sql_type
+ case sql_type
when 'point' then PostgreSQLColumn.point_to_string(value)
else
return super(value, column) unless column.array
PostgreSQLColumn.array_to_string(value, column, self)
end
when String
- return super(value, column) unless 'bytea' == column.sql_type
+ return super(value, column) unless 'bytea' == sql_type
{ :value => value, :format => 1 }
when Hash
- case column.sql_type
+ case sql_type
when 'hstore' then PostgreSQLColumn.hstore_to_string(value)
when 'json' then PostgreSQLColumn.json_to_string(value)
else super(value, column)
end
when IPAddr
- return super(value, column) unless ['inet','cidr'].include? column.sql_type
+ return super(value, column) unless ['inet','cidr'].include? sql_type
PostgreSQLColumn.cidr_to_string(value)
else
super(value, column)