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.



110
111
112
# File 'lib/sequel/plugins/serialization.rb', line 110

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.



114
115
116
# File 'lib/sequel/plugins/serialization.rb', line 114

def serialization_map
  @serialization_map
end

Instance Method Details

#freezeObject

Freeze serialization metadata when freezing model class.



128
129
130
131
132
133
134
# File 'lib/sequel/plugins/serialization.rb', line 128

def freeze
  @deserialization_map.freeze
  @serialization_map.freeze
  @serialization_module.freeze if @serialization_module

  super
end

#serialization_moduleObject



116
117
118
119
# File 'lib/sequel/plugins/serialization.rb', line 116

def serialization_module
  Sequel::Deprecation.deprecate('Sequel::Model.serialization_module', 'There is no replacement')
  @serialization_module
end

#serialization_module=(v) ⇒ Object



120
121
122
123
# File 'lib/sequel/plugins/serialization.rb', line 120

def serialization_module=(v)
  Sequel::Deprecation.deprecate('Sequel::Model.serialization_module=', 'There is no replacement')
  @serialization_module = v
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:



138
139
140
141
142
143
144
145
146
147
# File 'lib/sequel/plugins/serialization.rb', line 138

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(&: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.



151
152
153
# File 'lib/sequel/plugins/serialization.rb', line 151

def serialized_columns
  serialization_map.keys
end