module Sequel::Plugins::SerializationModificationDetection::InstanceMethods

Public Instance Methods

after_save() click to toggle source

Clear the cache of original deserialized values after saving so that it doesn't show the column is modified after saving.

Calls superclass method
# File lib/sequel/plugins/serialization_modification_detection.rb, line 35
def after_save
  super
  @original_deserialized_values = @deserialized_values
end
changed_columns() click to toggle source

Detect which serialized columns have changed.

Calls superclass method
# File lib/sequel/plugins/serialization_modification_detection.rb, line 41
def changed_columns
  cc = super
  cc = cc.dup if frozen?
  deserialized_values.each{|c, v| cc << c if !cc.include?(c) && original_deserialized_value(c) != v} 
  cc
end
freeze() click to toggle source

Freeze the original deserialized values when freezing the instance.

Calls superclass method
# File lib/sequel/plugins/serialization_modification_detection.rb, line 49
def freeze
  @original_deserialized_values ||= {}
  @original_deserialized_values.freeze
  super
end

Private Instance Methods

initialize_copy(other) click to toggle source

Duplicate the original deserialized values when duplicating instance.

Calls superclass method
# File lib/sequel/plugins/serialization_modification_detection.rb, line 58
def initialize_copy(other)
  super
  if o = other.instance_variable_get(:@original_deserialized_values)
    @original_deserialized_values = o.dup
  end
  self
end
initialize_set(values) click to toggle source

For new objects, serialize any existing deserialized values so that changes can be detected.

Calls superclass method
# File lib/sequel/plugins/serialization_modification_detection.rb, line 68
def initialize_set(values)
  super
  serialize_deserialized_values
end
original_deserialized_value(column) click to toggle source

Return the original deserialized value of the column, caching it to improve performance.

# File lib/sequel/plugins/serialization_modification_detection.rb, line 74
def original_deserialized_value(column)
  if frozen?
    @original_deserialized_values[column] || deserialize_value(column, self[column])
  else
    (@original_deserialized_values ||= {})[column] ||= deserialize_value(column, self[column])
  end
end