新規投稿
フォローする

他テーブルへのレコード登録・更新エラーが起こったときのsubmitのキャンセルについて

進地と申します。

 

以下のような処理を実現させたいのですが、
うまくいかず困っており助けていただけないでしょうか。

-----------------------------------------------------------
【実現させたいこと】
・在庫アプリと入荷アプリがあり、入荷アプリの
新規レコードの登録時に在庫アプリの数量を増やす、
という在庫管理を実現したい

・入荷アプリのcreate.submit.successイベントにおいて、
登録した商品と同じ商品コードのレコードを在庫アプリで検索。
レコードがなければ登録、あれば更新処理をかけるが、
もし登録や更新時にエラーが発生した場合はデータの不整合を
起こさないように入荷アプリのsubmitもキャンセル(ロールバック)したい
-----------------------------------------------------------

そもそも入荷アプリのcreate.submit.successイベントは
登録完了後のイベントなので、それをキャンセルすること自体が
無理なのでしょうか?

なおcreate.submitイベントに変えて入荷の登録完了前に
在庫アプリの登録・更新処理をするようにし、
在庫アプリの登録エラー時に入荷アプリのsubmitイベントで
エラーを返せばどちらのアプリも更新されないようにはできます。

ですがその場合には元々在庫アプリのフォームで設定した
入力必須チェック等がsubmitの処理後に走ってしまい、
在庫アプリ登録完了→入出荷アプリのエラーチェックと
本末転倒な事になってしまいます。

やはりcreate.submit.successイベント内でsubmitを
ロールバックできればいいのですが、そのようなことは
可能でしょうか。またどのように実装すればよいでしょうか。

分かりづらい記載になっているかもしれませんが、
どなたかお力をお貸し頂けると幸いです。

どうぞよろしくお願いします。

0

2件のコメント

Avatar
ウレット

お世話になります。

手法としては

・submit.successでPUT後、失敗ならDELETE処理を行う

・submitで自作バリデーションチェックしてダメならreturn false、OKならPUT処理。成功ならreturn event; 失敗ならreturn false;

…って感じでしょうか。

submitでのバリデーションチェックはreturn event後に行われるのでPUT→バリデーションチェックになるのは避けられません。
唯一避けられるのはJS上でオリジナルのバリデーションチェックを行うことです。

1
Avatar
EX_開発

ウレット様

返信いただきありがとうございます!

submit.success後にキャンセルするのは
やはり無理な感じなのですね。

submitイベントでPUTという流れにして
データの整合性を保つようにしてみようと思います!

0
サインインしてコメントを残してください。