diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-05-20 06:16:47 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-05-20 07:36:58 -0700 |
commit | 36fde2b704164ac02380518350f01a17d3e0208e (patch) | |
tree | 0c6722d237ffd583cef9e56a477c98ee6d80b543 /activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | |
parent | 528aff12888aaad131baab488fa1eabe6d2634fa (diff) | |
download | rails-36fde2b704164ac02380518350f01a17d3e0208e.tar.gz rails-36fde2b704164ac02380518350f01a17d3e0208e.tar.bz2 rails-36fde2b704164ac02380518350f01a17d3e0208e.zip |
Delegate `#type_cast` to injected type objects on SQLite3
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index 03ff0d4ead..7f83891043 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -42,13 +42,21 @@ module ActiveRecord module ConnectionAdapters #:nodoc: class SQLite3Column < Column #:nodoc: - class << self - def binary_to_string(value) - if value.encoding != Encoding::ASCII_8BIT - value = value.force_encoding(Encoding::ASCII_8BIT) - end - value + def type_cast(value) + if encoded? + super + else + cast_type.type_cast(value) + end + end + end + + class SQLite3Binary < Type::Binary # :nodoc: + def cast_value(value) + if value.encoding != Encoding::ASCII_8BIT + value = value.force_encoding(Encoding::ASCII_8BIT) end + value end end @@ -502,6 +510,12 @@ module ActiveRecord end protected + + def initialize_type_map(m) + super + m.register_type(/binary/i, SQLite3Binary.new) + end + def select(sql, name = nil, binds = []) #:nodoc: exec_query(sql, name, binds) end |