module Sequel::Plugins::Serialization::InstanceMethods

Public Instance Methods

before_validation() click to toggle source

Serialize deserialized values before saving

Calls superclass method
    # File lib/sequel/plugins/serialization.rb
197 def before_validation
198   serialize_deserialized_values
199   super
200 end
deserialized_values() click to toggle source

Hash of deserialized values, used as a cache.

    # File lib/sequel/plugins/serialization.rb
184 def deserialized_values
185   @deserialized_values ||= {}
186 end
freeze() click to toggle source

Freeze the deserialized values

Calls superclass method
    # File lib/sequel/plugins/serialization.rb
189 def freeze
190   deserialized_values
191   super
192   deserialized_values.freeze
193   self
194 end

Private Instance Methods

_refresh_set_values(hash) click to toggle source

Clear any cached deserialized values when doing a manual refresh.

Calls superclass method
    # File lib/sequel/plugins/serialization.rb
205 def _refresh_set_values(hash)
206   @deserialized_values.clear if @deserialized_values
207   super
208 end
deserialize_value(column, v) click to toggle source

Deserialize the column value. Called when the model column accessor is called to return a deserialized value.

    # File lib/sequel/plugins/serialization.rb
212 def deserialize_value(column, v)
213   unless v.nil?
214     raise Sequel::Error, "no entry in deserialization_map for #{column.inspect}" unless callable = model.deserialization_map[column]
215     callable.call(v)
216   end
217 end
initialize_copy(other) click to toggle source

Dup the deserialized values when duping model instance.

Calls superclass method
    # File lib/sequel/plugins/serialization.rb
220 def initialize_copy(other)
221   super
222   @deserialized_values = Hash[other.deserialized_values]
223   self
224 end
serialize_deserialized_values() click to toggle source

Serialize all deserialized values

    # File lib/sequel/plugins/serialization.rb
227 def serialize_deserialized_values
228   deserialized_values.each{|k,v| @values[k] = serialize_value(k, v)}
229 end
serialize_value(column, v) click to toggle source

Serialize the column value. Called before saving to ensure the serialized value is saved in the database.

    # File lib/sequel/plugins/serialization.rb
233 def serialize_value(column, v)
234   unless v.nil?
235     raise Sequel::Error, "no entry in serialization_map for #{column.inspect}" unless callable = model.serialization_map[column]
236     callable.call(v)
237   end
238 end