diff --git a/app/models/concerns/dossier_clone_concern.rb b/app/models/concerns/dossier_clone_concern.rb index 000e6a6e5..06283d891 100644 --- a/app/models/concerns/dossier_clone_concern.rb +++ b/app/models/concerns/dossier_clone_concern.rb @@ -167,11 +167,12 @@ module DossierCloneConcern end champs_to_remove += diff[:removed] - champs_to_remove - .filter { !_1.child? || !champs_to_remove.include?(_1.parent) } - .each do |champ| - champ.rows.flatten.each(&:destroy!) if champ.repetition? - champ.destroy! - end + children_champs_to_remove, root_champs_to_remove = champs_to_remove.partition(&:child?) + + children_champs_to_remove.each(&:destroy!) + root_champs_to_remove.each do |champ| + champ.rows.flatten.each(&:destroy!) if champ.repetition? + champ.destroy! + end end end