module Sequel::Plugins::Serialization::InstanceMethods

def _refresh(*)

Empty the deserialized values when refreshing.
def _refresh(*)
  @deserialized_values = {}
  super
end

def before_save

Serialize deserialized values before saving
def before_save
  serialize_deserialized_values
  super
end

def deserialize_value(column, v)

return a deserialized value.
Deserialize the column value. Called when the model column accessor is called to
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

def initialize_set(values)

Set @deserialized_values to the empty hash
def initialize_set(values)
  @deserialized_values = {}
  super
end

def serialize_deserialized_values

Serialize all deserialized values
def serialize_deserialized_values
  deserialized_values.each{|k,v| @values[k] = serialize_value(k, v)}
end

def serialize_value(column, v)

is saved in the database.
Serialize the column value. Called before saving to ensure the serialized value
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

def set_values(*)

Initialization the deserialized values for objects retrieved from the database.
def set_values(*)
  @deserialized_values ||= {}
  super
end