問題タブ [aasm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
84 参照

ruby - Ruby AASM (ステート マシンとして機能): 支払いの処理: コールバック前とガードの組み合わせ

Payment次のような非常に単純なクラスを想定しましょう。

そのpayment.payため、適切な API 呼び出しを行い、支払いをトリガーするために呼び出します。

支払いが実際に成功した場合にのみからcreatedへの移行が行われることが非常に重要です。paid

1) API 呼び出しはイベントのbeforeコールバックに配置する必要があると想定します:payが、API 呼び出しが失敗した場合でも遷移は停止しません (API 呼び出しで例外が発生せず、ステータスが返されるだけであると仮定します)。

before2) 次に、コールバックとガードを組み合わせる必要があると考えました。beforeコールバックを使用して API を呼び出し、その結果をモデルに設定します (attr_accessorたとえばインスタンスを使用)。created次に、支払いが成功した場合にのみ、ガードはtopaid状態からの遷移を許可します。

それは、aasm を使用してステート マシンでこのようなイベント遷移を処理する慣用的な方法ですか? タグ付けされたすべてのスタック オーバーフローの質問aasmと gem のドキュメントを読みましたが、これらの安全な移行を行うための最善の方法についてまだ質問があります。