module Sequel::Plugins::Serialization::ClassMethods

Attributes

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

Public Instance Methods

inherited(subclass) click to toggle source

Copy the #serialization_map and deserialization map into the subclass.

# 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) click to toggle source

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
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_columns() click to toggle source

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

# File lib/sequel/plugins/serialization.rb, line 128
def serialized_columns
  serialization_map.keys
end