sql >> Base de Datos >  >> RDS >> Mysql

Rails validar la unicidad falla en las entradas simultáneas

Esto es muy poco común y probablemente tengas mucha mala suerte de que así sea, es posible.

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

Considere lo siguiente:El usuario A envía el formulario

  • El usuario A envía el formulario
  • Rails comprueba la base de datos en busca de un ID existente para el usuario A; no se encuentra ninguno
  • El usuario B envía el formulario
  • Rails comprueba la base de datos en busca de un ID existente para el usuario B; no se encuentra ninguno
  • Rails guarda el registro A del usuario
  • Rails guarda el registro B del usuario

Todo esto tiene que suceder en milisegundos, pero es técnicamente posible.

Sugeriría agregar una restricción en el nivel de la base de datos (clave principal).