Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les rails valident l'unicité échoue sur les entrées simultanées

C'est très rare et vous n'avez probablement pas de chance, c'est possible.

Lire :https ://github.com/rails/rails/blob/master/activerecord/lib/active_record/validations/uniqueness.rb#L165

Considérez ce qui suit :L'utilisateur A soumet le formulaire

  • L'utilisateur A soumet le formulaire
  • Rails vérifie la base de données pour l'ID existant de l'utilisateur A - aucun n'a été trouvé
  • L'utilisateur B soumet le formulaire
  • Rails vérifie la base de données pour l'ID existant de l'utilisateur B - aucun n'a été trouvé
  • Rails enregistre l'enregistrement de l'utilisateur A
  • Rails enregistre l'enregistrement de l'utilisateur B

Tout cela doit se produire en quelques millisecondes mais c'est techniquement possible.

Je suggérerais d'ajouter une contrainte au niveau de la base de données (clé primaire).