Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Rails valida falhas de exclusividade em entradas simultâneas


Isso é muito incomum e você provavelmente tem muito azar que tem, é possível.

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

Considere o seguinte:O usuário A envia o formulário
  • O usuário A envia o formulário
  • Rails verifica banco de dados para ID existente para o usuário A - nenhum encontrado
  • O usuário B envia o formulário
  • Rails verifica banco de dados para ID existente para o usuário B - nenhum encontrado
  • Rails salva o registro do usuário A
  • Rails salva registro do usuário B

Tudo isso tem que acontecer em milissegundos, mas é tecnicamente possível.

Eu sugiro adicionar uma restrição no nível do banco de dados (chave primária).