From 4a26b61d1b0533fbfc964a210b7a8eb0ec9b9f10 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 8 Mar 2024 15:55:50 +0100 Subject: [PATCH] fix(rebase): rebase a dossier when its repetition had been removed on newer version does not crash --- app/models/concerns/dossier_rebase_concern.rb | 4 +++- app/models/procedure_revision_change.rb | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/dossier_rebase_concern.rb b/app/models/concerns/dossier_rebase_concern.rb index 322809b52..86ef8d06c 100644 --- a/app/models/concerns/dossier_rebase_concern.rb +++ b/app/models/concerns/dossier_rebase_concern.rb @@ -71,7 +71,9 @@ module DossierRebaseConcern .each { add_new_champs_for_revision(_1) } # remove champ - changes_by_op[:remove].each { champs_by_stable_id[_1.stable_id].destroy_all } + children_champ, root_champ = changes_by_op[:remove].partition(&:child?) + children_champ.each { champs_by_stable_id[_1.stable_id].delete_all } + root_champ.each { champs_by_stable_id[_1.stable_id].delete_all } # update champ changes_by_op[:update].each { apply(_1, champs_by_stable_id[_1.stable_id]) } diff --git a/app/models/procedure_revision_change.rb b/app/models/procedure_revision_change.rb index 2bb4a95f9..fc412cc26 100644 --- a/app/models/procedure_revision_change.rb +++ b/app/models/procedure_revision_change.rb @@ -7,6 +7,7 @@ class ProcedureRevisionChange def label = @type_de_champ.libelle def stable_id = @type_de_champ.stable_id def private? = @type_de_champ.private? + def child? = @type_de_champ.child? def to_h = { op:, stable_id:, label:, private: private? }