From adced0f33a4254e4dfdf4b09c0f20af67afff7a3 Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Wed, 3 Aug 2022 18:29:48 +0200 Subject: [PATCH] fix(revision): fix stable siblings order when there are multiple identical position MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ça arrive parfois dans les tests, et potentiellement en prod : après avoir créé un nouveau `revision_type_de_champ`, on se retrouve très momentanément avec 2 RTDC ayant le même position en attendant le renumérotation peu près. https://github.com/betagouv/demarches-simplifiees.fr/blob/main/app/models/procedure_revision.rb#L55 Ceci conduisait à une renumérotation erronnée quand la db renvoyait le nouveau RTDC créé *avant* les précédents. --- app/models/procedure_revision_type_de_champ.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/procedure_revision_type_de_champ.rb b/app/models/procedure_revision_type_de_champ.rb index 7ebe63d97..2fd7521b0 100644 --- a/app/models/procedure_revision_type_de_champ.rb +++ b/app/models/procedure_revision_type_de_champ.rb @@ -18,7 +18,7 @@ class ProcedureRevisionTypeDeChamp < ApplicationRecord has_many :revision_types_de_champ, -> { ordered }, foreign_key: :parent_id, class_name: 'ProcedureRevisionTypeDeChamp', inverse_of: :parent, dependent: :destroy has_one :procedure, through: :revision scope :root, -> { where(parent: nil) } - scope :ordered, -> { order(:position) } + scope :ordered, -> { order(:position, :id) } scope :revision_ordered, -> { order(:revision_id) } scope :public_only, -> { joins(:type_de_champ).where(types_de_champ: { private: false }) } scope :private_only, -> { joins(:type_de_champ).where(types_de_champ: { private: true }) }