Module: Sequel::Plugins::Serialization::ClassMethods

Defined in:
lib/sequel/plugins/serialization.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#deserialization_mapObject (readonly)

A hash with column name symbols and callable values, with the value called to deserialize the column.



92
93
94
# File 'lib/sequel/plugins/serialization.rb', line 92

def deserialization_map
  @deserialization_map
end

#serialization_mapObject (readonly)

A hash with column name symbols and callable values, with the value called to serialize the column.



96
97
98
# File 'lib/sequel/plugins/serialization.rb', line 96

def serialization_map
  @serialization_map
end

#serialization_moduleObject

Module to store the serialized column accessor methods, so they can call be overridden and call super to get the serialization behavior



100
101
102
# File 'lib/sequel/plugins/serialization.rb', line 100

def serialization_module
  @serialization_module
end

Instance Method Details

#inherited(subclass) ⇒ Object

Copy the serialization_map and deserialization map into the subclass.



103
104
105
106
107
108
109
110
111
# File 'lib/sequel/plugins/serialization.rb', line 103

def inherited(subclass)
  super
  sm = serialization_map.dup
  dsm = deserialization_map.dup
  subclass.instance_eval do
    @deserialization_map = dsm
    @serialization_map = sm
  end
end

#serialize_attributes(format, *columns) ⇒ Object

Create instance level reader that deserializes column values on request, and instance level writer that stores new deserialized values.

Raises:



115
116
117
118
119
120
121
122
123
124
# File 'lib/sequel/plugins/serialization.rb', line 115

def serialize_attributes(format, *columns)
  if format.is_a?(Symbol)
    unless format = REGISTERED_FORMATS[format]
      raise(Error, "Unsupported serialization format: #{format} (valid formats: #{REGISTERED_FORMATS.keys.map{|k| k.inspect}.join})")
    end
  end
  serializer, deserializer = format
  raise(Error, "No columns given.  The serialization plugin requires you specify which columns to serialize") if columns.empty?
  define_serialized_attribute_accessor(serializer, deserializer, *columns)
end

#serialized_columnsObject

The columns that will be serialized. This is only for backwards compatibility, use serialization_map in new code.



128
129
130
# File 'lib/sequel/plugins/serialization.rb', line 128

def serialized_columns
  serialization_map.keys
end