demarches-simplifiees / demarches-simplifiees.fr

Dématérialiser et simplifier les démarches administratives
https://www.demarches-simplifiees.fr
GNU Affero General Public License v3.0
190 stars 89 forks source link

Ajouter des index aux colonnes `uniques` #6013

Closed kemenaran closed 3 years ago

kemenaran commented 3 years ago

La config Rails 6 de Rubocop nous prévient lorsqu'on a des modèles qui ont une contrainte d'unicité au niveau Rails, mais que cette contrainte n'est pas présente dans la base de donnée. C'est effectivement une bonne idée, parce que le validateur Rails ne fonctionne qu'au niveau d'une instance web donnée : il peut y avoir des race-conditions sur l'ajout de colonnes uniques, qui doivent être résolues par la base de donnée.

Lors du passage à Rails 6, on a désactivé ce linter spécifique, le temps d'essuyer les plâtres.

Mais maintenant, il est temps de ré-activer ce linter, et de rajouter les contraintes qui manquent.


Une partie du travail a été commencée dans #5535. Mais évidemment on a de la bad data en prod, il faut donc avant rectifier les données concernées.

kemenaran commented 3 years ago

Pour ceux que ça intéresse, une branche avec quelques helpers pour faciliter le dédoublonnage safe de la base (avec même des bouts de Gitlab dedans) : https://github.com/betagouv/demarches-simplifiees.fr/tree/add-unique-constraints-1