module Sequel::Plugins::Serialization::InstanceMethods

Public Instance Methods

deserialized_values() click to toggle source

Hash of deserialized values, used as a cache.

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

Freeze the deserialized values

Calls superclass method
# File lib/sequel/plugins/serialization.rb, line 184
def freeze
  deserialized_values.freeze
  super
end

Private Instance Methods

_before_validation() click to toggle source

Serialize deserialized values before saving

Calls superclass method
# File lib/sequel/plugins/serialization.rb, line 192
def _before_validation
  serialize_deserialized_values
  super
end
_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, line 198
def _refresh_set_values(hash)
  @deserialized_values.clear if @deserialized_values
  super
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, line 205
def deserialize_value(column, v)
  unless v.nil?
    raise Sequel::Error, "no entry in deserialization_map for #{column.inspect}" unless callable = model.deserialization_map[column]
    callable.call(v)
  end
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, line 213
def initialize_copy(other)
  super
  @deserialized_values = other.deserialized_values.dup
  self
end
serialize_deserialized_values() click to toggle source

Serialize all deserialized values

# File lib/sequel/plugins/serialization.rb, line 220
def serialize_deserialized_values
  deserialized_values.each{|k,v| @values[k] = serialize_value(k, v)}
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, line 226
def serialize_value(column, v)
  unless v.nil?
    raise Sequel::Error, "no entry in serialization_map for #{column.inspect}" unless callable = model.serialization_map[column]
    callable.call(v)
  end
end