aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/concerns/checksum_support.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/app/models/concerns/checksum_support.rb b/app/models/concerns/checksum_support.rb
index 97209f810..696844fbd 100644
--- a/app/models/concerns/checksum_support.rb
+++ b/app/models/concerns/checksum_support.rb
@@ -14,10 +14,13 @@ module ChecksumSupport
parent_class = self
belongs_to = opts[:relation] || self.model_name.singular
has_many = opts[:relation] || self.model_name.plural
+
+ Rails.logger.debug "Define callback in #{klass} to update checksums #{self.model_name} (via #{has_many}/#{belongs_to})"
klass.after_save do
parents = []
parents << self.send(belongs_to) if klass.reflections[belongs_to].present?
parents += self.send(has_many) if klass.reflections[has_many].present?
+ Rails.logger.debug "Request from #{klass.name} checksum updates for #{parents.count} #{parent_class} parent(s)"
parents.each &:update_checksum_without_callbacks!
end
end
@@ -60,22 +63,24 @@ module ChecksumSupport
def update_checksum
if self.checksum_source_changed?
self.checksum = Digest::SHA256.new.hexdigest(self.checksum_source)
+ Rails.logger.debug("Changed #{self.class.name}:#{id} checksum: #{self.checksum}")
end
end
def update_checksum!
- set_current_checksum_source
- if checksum_source_changed?
- update checksum: Digest::SHA256.new.hexdigest(checksum_source)
- end
+ _checksum_source = current_checksum_source
+ update checksum_source: _checksum_source, checksum: Digest::SHA256.new.hexdigest(_checksum_source)
+ Rails.logger.debug("Updated #{self.class.name}:#{id} checksum: #{self.checksum}")
end
def update_checksum_without_callbacks!
set_current_checksum_source
_checksum = Digest::SHA256.new.hexdigest(checksum_source)
+ Rails.logger.debug("Compute checksum for #{self.class.name}:#{id} checksum_source:'#{checksum_source}' checksum: #{_checksum}")
if _checksum != self.checksum
self.checksum = _checksum
self.class.where(id: self.id).update_all(checksum: _checksum) unless self.new_record?
+ Rails.logger.debug("Updated #{self.class.name}:#{id} checksum: #{self.checksum}")
end
end
end