aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-06-07 13:46:22 -0600
committerSean Griffin <sean@thoughtbot.com>2014-06-13 10:20:54 -0600
commit6f08db05c00ea05c38d7d9d7bea757a903786a83 (patch)
treebdf051f4286c280d7c724ae05f18692078e1524e /activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb
parent70b931f846cb212f3db16f35a10094fb727a57e2 (diff)
downloadrails-6f08db05c00ea05c38d7d9d7bea757a903786a83.tar.gz
rails-6f08db05c00ea05c38d7d9d7bea757a903786a83.tar.bz2
rails-6f08db05c00ea05c38d7d9d7bea757a903786a83.zip
Introduce an Attribute object to handle the type casting dance
There's a lot more that can be moved to these, but this felt like a good place to introduce the object. Plans are: - Remove all knowledge of type casting from the columns, beyond a reference to the cast_type - Move type_cast_for_database to these objects - Potentially make them mutable, introduce a state machine, and have dirty checking handled here as well - Move `attribute`, `decorate_attribute`, and anything else that modifies types to mess with this object, not the columns hash - Introduce a collection object to manage these, reduce allocations, and not require serializing the types
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb
index 36c53d8732..89b203d2b1 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb
@@ -3,8 +3,9 @@ module ActiveRecord
module PostgreSQL
module OID # :nodoc:
class Bytea < Type::Binary
- def cast_value(value)
- PGconn.unescape_bytea value
+ def type_cast_from_database(value)
+ return if value.nil?
+ PGconn.unescape_bytea(super)
end
end
end