diff options
Diffstat (limited to 'activerecord/lib/active_record/type')
-rw-r--r-- | activerecord/lib/active_record/type/serialized.rb | 28 | ||||
-rw-r--r-- | activerecord/lib/active_record/type/value.rb | 4 |
2 files changed, 32 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/type/serialized.rb b/activerecord/lib/active_record/type/serialized.rb new file mode 100644 index 0000000000..cc7513ca2a --- /dev/null +++ b/activerecord/lib/active_record/type/serialized.rb @@ -0,0 +1,28 @@ +module ActiveRecord + module Type + class Serialized < SimpleDelegator # :nodoc: + attr_reader :subtype + + def initialize(subtype) + @subtype = subtype + super + end + + def type_cast(value) + if value.respond_to?(:unserialized_value) + value.unserialized_value(super(value.value)) + else + super + end + end + + def serialized? + true + end + + def accessor + ActiveRecord::Store::IndifferentHashAccessor + end + end + end +end diff --git a/activerecord/lib/active_record/type/value.rb b/activerecord/lib/active_record/type/value.rb index 72d27197d5..a5493be8f2 100644 --- a/activerecord/lib/active_record/type/value.rb +++ b/activerecord/lib/active_record/type/value.rb @@ -43,6 +43,10 @@ module ActiveRecord false end + def serialized? + false + end + def klass ::Object end |