У меня есть конечная точка, которая получает подтверждение от нашего платежного сервиса.
Однако этот платежный сервис дважды пингуется, поэтому, учитывая то, как мы это реализовали, мы получаем два подтверждения заказов.
Я не собираюсь обсуждать, как мы разработали эту часть (она будет улучшена) - я хотел бы понять, как настроить все, чтобы убедиться, что действие может блокировать любые другие, пока оно не завершится.
Или хотя бы понять, что послужит отправной точкой для решения такой проблемы.
Дублирование происходит из этого действия:
def export
return head(:ok) if @order.reload.state == 'complete'
post_data(data)
@order.update(state: :complete)
head(:ok)
end
private
def post_data(data)
Curl.post("#{SHOP_URL}/orders.json", data.to_json) do |http|
http.headers['Content-Type'] = 'application/json'
http.headers['Accept'] = '*/*'
end
end
Если экспорт вызывается дважды, а заказ не обновляется, я получаю два подтверждения, которых я бы хотел избежать.