rubyで関数の処理が終了するまでレスポンスを待ちたいです。
現在、以下のようなコードでjsonデータを受け取り、Activerecordを介してdbに保存する処理を行っています。
データが多い場合に、webapiを叩いたときに処理が成功しても、rails側でrenderメソッドが実行される前に204ステータスが帰ってくる挙動をしております。
この場合に、webapiを叩いた時に正しいレスポンス(処理が成功した場合、ステータスコード204ではなく200で帰ってきてほしい)を返すためにはどうしたらよいのでしょうか?
現状分かっていること
- 下記のコードでapiを叩いたときに1レコードをjsonデータ200でかえってきています。しかし、複数レコードの時、例えばテーブルの全件をjsonとして送信して保存する処理は200ではなく204が帰ってきています。
環境
rails 5.2.4
ruby 2.6.5
projectはrailsのapi modeで作成しています
ruby
1json = ActiveSupport::JSON.decode(request.body.read) 2# この部分はmodel側に関数で定義しております。------- 3json.each_with_index do |record, index| 4 #dbに保存する処理 5end 6#-------------------------------------------------- 7render status: 200, body: "成功しました"
タイトルと提示されたコードと質問内容がいまいち噛み合っていないように感じます。
きちんと処理が終了してからレスポンスされるコードに見えますし、
返されるステータスもコンテントなしでrenderしようとしているので204 で正しいのでは?
もう少し問題を整理してから質問してください。
単にステータス200を返したいだけなのであれば head :ok を返せばいいだけですが...。
200を返した時は head :ok でいいのですね。
現状としては、
どうやら1レコードの時には、200のステータスが帰ってきますが、レコード全件のような重い処理の時には204で帰ってきているのでrenderで指定した引数が実行されていないようにみえるのですが...
回答1件
あなたの回答
tips
プレビュー