Module | Sequel::Plugins::Serialization::ClassMethods |
In: |
lib/sequel/plugins/serialization.rb
|
deserialization_map | [R] | A hash with column name symbols and callable values, with the value called to deserialize the column. |
serialization_map | [R] | A hash with column name symbols and callable values, with the value called to serialize the column. |
serialization_module | [RW] | Module to store the serialized column accessor methods, so they can call be overridden and call super to get the serialization behavior |
Copy the serialization_map and deserialization map into the subclass.
# File lib/sequel/plugins/serialization.rb, line 103 103: def inherited(subclass) 104: super 105: sm = serialization_map.dup 106: dsm = deserialization_map.dup 107: subclass.instance_eval do 108: @deserialization_map = dsm 109: @serialization_map = sm 110: end 111: end
Create instance level reader that deserializes column values on request, and instance level writer that stores new deserialized values.
# File lib/sequel/plugins/serialization.rb, line 115 115: def serialize_attributes(format, *columns) 116: if format.is_a?(Symbol) 117: unless format = REGISTERED_FORMATS[format] 118: raise(Error, "Unsupported serialization format: #{format} (valid formats: #{REGISTERED_FORMATS.keys.map{|k| k.inspect}.join})") 119: end 120: end 121: serializer, deserializer = format 122: raise(Error, "No columns given. The serialization plugin requires you specify which columns to serialize") if columns.empty? 123: define_serialized_attribute_accessor(serializer, deserializer, *columns) 124: end