module Sequel::Plugins::SerializationModificationDetection::InstanceMethods
Public Instance Methods
Source
# File lib/sequel/plugins/serialization_modification_detection.rb 37 def after_save 38 super 39 @original_deserialized_values = @deserialized_values 40 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 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
Detect which serialized columns have changed.
Calls superclass method
Source
# 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
Freeze the original deserialized values when freezing the instance.
Calls superclass method
Private Instance Methods
Source
# 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
Duplicate the original deserialized values when duplicating instance.
Calls superclass method
Source
# File lib/sequel/plugins/serialization_modification_detection.rb 71 def initialize_set(values) 72 super 73 serialize_deserialized_values 74 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 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
Return the original deserialized value of the column, caching it to improve performance.