diff options
| author | Zog | 2018-05-17 11:18:13 +0200 |
|---|---|---|
| committer | cedricnjanga | 2018-05-17 07:06:19 -0700 |
| commit | 488237c48b6174873470d7b6ce3d1465df46ba20 (patch) | |
| tree | c82f82ea3b7e6b74b33bd8ca6ed4f371eaebcdf8 /app | |
| parent | 3a087de30b60baad7805b9d6786776aadb43792b (diff) | |
| download | chouette-core-488237c48b6174873470d7b6ce3d1465df46ba20.tar.bz2 | |
Refs #6624; Update parent's checksum on deletion
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/concerns/checksum_support.rb | 7 |
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 |
