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, line 35 def after_save super @original_deserialized_values = @deserialized_values end
changed_columns()
click to toggle source
Detect which serialized columns have changed.
Calls superclass method
# File lib/sequel/plugins/serialization_modification_detection.rb, line 41 def changed_columns cc = super cc = cc.dup if frozen? deserialized_values.each{|c, v| cc << c if !cc.include?(c) && original_deserialized_value(c) != v} cc 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, line 49 def freeze @original_deserialized_values ||= {} @original_deserialized_values.freeze super 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, line 58 def initialize_copy(other) super if o = other.instance_variable_get(:@original_deserialized_values) @original_deserialized_values = o.dup end self 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, line 68 def initialize_set(values) super serialize_deserialized_values 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, line 74 def original_deserialized_value(column) if frozen? @original_deserialized_values[column] || deserialize_value(column, self[column]) else (@original_deserialized_values ||= {})[column] ||= deserialize_value(column, self[column]) end end