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   super
54   @original_deserialized_values.freeze
55   self
56 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
61 def initialize_copy(other)
62   super
63   if o = other.instance_variable_get(:@original_deserialized_values)
64     @original_deserialized_values = Hash[o]
65   end
66   self
67 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
71 def initialize_set(values)
72   super
73   serialize_deserialized_values
74 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
77 def original_deserialized_value(column)
78   if frozen?
79     @original_deserialized_values[column] || deserialize_value(column, self[column])
80   else
81     (@original_deserialized_values ||= {})[column] ||= deserialize_value(column, self[column])
82   end
83 end