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
37 def after_save
38   super
39   @original_deserialized_values = @deserialized_values
40 end
changed_columns() click to toggle source

Detect which serialized columns have changed.

Calls superclass method
   # File lib/sequel/plugins/serialization_modification_detection.rb
43 def changed_columns
44   cc = super
45   cc = cc.dup if frozen?
46   deserialized_values.each{|c, v| cc << c if !cc.include?(c) && original_deserialized_value(c) != v} 
47   cc
48 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
51 def freeze
52   @original_deserialized_values ||= {}
53   @original_deserialized_values.freeze
54   super
55 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
60 def initialize_copy(other)
61   super
62   if o = other.instance_variable_get(:@original_deserialized_values)
63     @original_deserialized_values = Hash[o]
64   end
65   self
66 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
70 def initialize_set(values)
71   super
72   serialize_deserialized_values
73 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
76 def original_deserialized_value(column)
77   if frozen?
78     @original_deserialized_values[column] || deserialize_value(column, self[column])
79   else
80     (@original_deserialized_values ||= {})[column] ||= deserialize_value(column, self[column])
81   end
82 end