diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-06-07 13:46:22 -0600 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-06-13 10:20:54 -0600 |
commit | 6f08db05c00ea05c38d7d9d7bea757a903786a83 (patch) | |
tree | bdf051f4286c280d7c724ae05f18692078e1524e /activerecord/lib/active_record/connection_adapters | |
parent | 70b931f846cb212f3db16f35a10094fb727a57e2 (diff) | |
download | rails-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')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb | 5 |
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 |