module Sequel::Plugins::SerializationModificationDetection::InstanceMethods
Public Instance Methods
Source
# File lib/sequel/plugins/serialization_modification_detection.rb 41 def after_save 42 super 43 @original_deserialized_values = @deserialized_values 44 end
Clear the cache of original deserialized values after saving so that it doesn’t show the column is modified after saving.
Calls superclass method
Source
# 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
Detect which serialized columns have changed.
Calls superclass method
Source
# 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
Freeze the original deserialized values when freezing the instance.
Calls superclass method
Private Instance Methods
Source
# 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
Duplicate the original deserialized values when duplicating instance.
Calls superclass method
Source
# File lib/sequel/plugins/serialization_modification_detection.rb 75 def initialize_set(values) 76 super 77 serialize_deserialized_values 78 end
For new objects, serialize any existing deserialized values so that changes can be detected.
Calls superclass method
Source
# 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
Return the original deserialized value of the column, caching it to improve performance.