Sha256: fb5d897f7acebd37857880defe74aeeea9fcc8911a936bf436aea2bc26e8651b
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
module Spontaneous::DataMapper module ContentModel module Serialization def self.included(model) # Don't want to pollute this shared module with the accessors # (in case we are using this in multiple models) m = Module.new model.serialized_columns.each do |column| m.module_eval (<<-RB), __FILE__, __LINE__ def #{column} _deserialize_column(:#{column}) { super } end def #{column}=(value) super(_serialize_column(:#{column}, value)) end RB end model.send :include, m end def refresh _deserialized_values.clear super end private def _deserialized_values @_deserialized_values ||= {} end def _deserialize_column(column) cache = _deserialized_values unless cache.key?(column) cache[column] = _deserialize_value(yield) end cache[column] end def _deserialize_value(value) Spontaneous::parse_json(value || "null") end def _serialize_column(column, value) _deserialized_values[column] = value _serialize_value(value) end def _serialize_value(value) Spontaneous::encode_json(value) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
spontaneous-0.2.0.beta10 | lib/spontaneous/data_mapper/content_model/serialization.rb |