Mysql
 sql >> Database >  >> RDS >> Mysql

Rails convalida l'unicità non riesce su input simultanei

Questo è molto raro e probabilmente sei molto sfortunato, è possibile.

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

Considera quanto segue:l'utente A invia il modulo

  • L'utente A invia il modulo
  • Rails controlla il database per l'ID esistente per l'utente A- nessuno trovato
  • L'utente B invia il modulo
  • Rails controlla il database per l'ID esistente per l'utente B- nessuno trovato
  • Rails Salva il record dell'utente A
  • Rails salva il record dell'utente B

Tutto questo deve avvenire in pochi millisecondi ma è tecnicamente possibile.

Suggerirei di aggiungere un vincolo a livello di database (chiave primaria).