действие контроллера rails / отключение параллелизма - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть конечная точка, которая получает подтверждение от нашего платежного сервиса.

Однако этот платежный сервис дважды пингуется, поэтому, учитывая то, как мы это реализовали, мы получаем два подтверждения заказов.

Я не собираюсь обсуждать, как мы разработали эту часть (она будет улучшена) - я хотел бы понять, как настроить все, чтобы убедиться, что действие может блокировать любые другие, пока оно не завершится.

Или хотя бы понять, что послужит отправной точкой для решения такой проблемы.

Дублирование происходит из этого действия:

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

Если экспорт вызывается дважды, а заказ не обновляется, я получаю два подтверждения, которых я бы хотел избежать.

...