Я тестирую свой код, он без проблем работает с одним запросом, но когда я пытаюсь отправить его по нескольким запросам одновременно, у меня появляется повторяющаяся ошибка. Я использую MySQL в качестве базы данных.
Модель
class Playtime < ApplicationRecord
validates :local_id, uniqueness: true, allow_blank: true
end
Контроллер
Из этого
def create
begin
if !Playtime.where(local_id: params[:local_id]).exists?
@playtime = Playtime.create!(playtime_params)
json_response(@playtime.local_id,true)
else
json_response(params[:local_id], true)
end
rescue ActiveRecord::RecordInvalid => invalid
json_response(invalid.record.errors.full_messages.first,false)
end
end
К этому я думал, что это будет исправлено с помощью этого.
def create
begin
if !Playtime.where(local_id: params[:local_id]).exists?
@playtime = Playtime.create(playtime_params)
if @playtime.valid?
json_response(@playtime.local_id,true)
else
json_response(params[:local_id], true)
end
else
json_response(params[:local_id], true)
end
rescue ActiveRecord::RecordInvalid => invalid
json_response(invalid.record.errors.full_messages.first,false)
end
end
Но та же ошибка.
Мой запрос.
curl -X POST \
http://localhost:3000/events/playtime \
-H 'Content-Type: application/json' \
-H 'Postman-Token: b4a636e9-5802-446f-9770-692895ebdbfd' \
-H 'cache-control: no-cache' \
-d '{
"local_id": "664278-153"
}'&
curl -X POST \
http://localhost:3000/events/playtime \
-H 'Content-Type: application/json' \
-H 'Postman-Token: b4a636e9-5802-446f-9770-692895ebdbfd' \
-H 'cache-control: no-cache' \
-d '{
"local_id": "664278-153"
}'
Ошибка без передачи на спасение.
ActiveRecord::RecordNotUnique (Mysql2::Error: Duplicate entry '664278-153' for key 'index_playtimes_on_local_id': INSERT INTO `playtimes`