Module: Sequel::Plugins::Serialization::ClassMethods
- Defined in:
- lib/sequel/plugins/serialization.rb
Instance Attribute Summary collapse
-
#deserialization_map ⇒ Object
readonly
A hash with column name symbols and callable values, with the value called to deserialize the column.
-
#serialization_map ⇒ Object
readonly
A hash with column name symbols and callable values, with the value called to serialize the column.
-
#serialization_module ⇒ Object
Module to store the serialized column accessor methods, so they can call be overridden and call super to get the serialization behavior.
Instance Method Summary collapse
-
#inherited(subclass) ⇒ Object
Copy the serialization_map and deserialization map into the subclass.
-
#serialize_attributes(format, *columns) ⇒ Object
Create instance level reader that deserializes column values on request, and instance level writer that stores new deserialized values.
-
#serialized_columns ⇒ Object
The columns that will be serialized.
Instance Attribute Details
#deserialization_map ⇒ Object (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_map ⇒ Object (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_module ⇒ Object
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.
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_columns ⇒ Object
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 |