aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/attribute_methods/serialization.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-02-03 14:34:53 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2012-02-07 13:51:53 -0800
commitd592ea3b02c7e0952b87b876ad92bd1b453543c8 (patch)
treeff7bde9d731bb174e367357b8d1b7d667c1b2de7 /activerecord/lib/active_record/attribute_methods/serialization.rb
parentdd1eb78d767d3272f951a240a171b841a5ebd356 (diff)
downloadrails-d592ea3b02c7e0952b87b876ad92bd1b453543c8.tar.gz
rails-d592ea3b02c7e0952b87b876ad92bd1b453543c8.tar.bz2
rails-d592ea3b02c7e0952b87b876ad92bd1b453543c8.zip
wrap and cache columns for typecasting
Diffstat (limited to 'activerecord/lib/active_record/attribute_methods/serialization.rb')
-rw-r--r--activerecord/lib/active_record/attribute_methods/serialization.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/serialization.rb b/activerecord/lib/active_record/attribute_methods/serialization.rb
index 38e7bf77ef..3bc749dabf 100644
--- a/activerecord/lib/active_record/attribute_methods/serialization.rb
+++ b/activerecord/lib/active_record/attribute_methods/serialization.rb
@@ -10,6 +10,16 @@ module ActiveRecord
self.serialized_attributes = {}
end
+ class Type # :nodoc:
+ def initialize(column)
+ @column = column
+ end
+
+ def type_cast(value)
+ value.unserialized_value
+ end
+ end
+
class Attribute < Struct.new(:coder, :value, :state)
def unserialized_value
state == :serialized ? unserialize : value