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
41 def after_save
42   super
43   @original_deserialized_values = @deserialized_values
44 end
changed_columns() click to toggle source

Detect which serialized columns have changed.

Calls superclass method
   # File lib/sequel/plugins/serialization_modification_detection.rb
47 def changed_columns
48   cc = super
49   cc = cc.dup if frozen?
50   deserialized_values.each{|c, v| cc << c if !cc.include?(c) && original_deserialized_value(c) != v} 
51   cc
52 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
55 def freeze
56   @original_deserialized_values ||= {}
57   super
58   @original_deserialized_values.freeze
59   self
60 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
65 def initialize_copy(other)
66   super
67   if o = other.instance_variable_get(:@original_deserialized_values)
68     @original_deserialized_values = Hash[o]
69   end
70   self
71 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
75 def initialize_set(values)
76   super
77   serialize_deserialized_values
78 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
81 def original_deserialized_value(column)
82   if frozen?
83     @original_deserialized_values[column] || deserialize_value(column, self[column])
84   else
85     (@original_deserialized_values ||= {})[column] ||= deserialize_value(column, self[column])
86   end
87 end