aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorZog2018-05-17 11:18:13 +0200
committercedricnjanga2018-05-17 07:06:19 -0700
commit488237c48b6174873470d7b6ce3d1465df46ba20 (patch)
treec82f82ea3b7e6b74b33bd8ca6ed4f371eaebcdf8 /app
parent3a087de30b60baad7805b9d6786776aadb43792b (diff)
downloadchouette-core-488237c48b6174873470d7b6ce3d1465df46ba20.tar.bz2
Refs #6624; Update parent's checksum on deletion
Diffstat (limited to 'app')
-rw-r--r--app/models/concerns/checksum_support.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/app/models/concerns/checksum_support.rb b/app/models/concerns/checksum_support.rb
index fe52604bb..86bbd1d00 100644
--- a/app/models/concerns/checksum_support.rb
+++ b/app/models/concerns/checksum_support.rb
@@ -10,19 +10,24 @@ module ChecksumSupport
end
module ClassMethods
+
def has_checksum_children klass, opts={}
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
+
+ child_update_parent = Proc.new 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.compact.each &:update_checksum_without_callbacks!
end
+
+ klass.after_save &child_update_parent
+ klass.after_destroy &child_update_parent
end
end