Rails アプリでact_as_state_machine (AASM)を使用して、従来の有限ステート マシンである状態から次の状態へのモデルのフローを制御しています。アプリケーション用の API を構築しています。その一環として、Rails モデルがupdate
API ユーザーによって Controller メソッドに渡された状態に基づいて更新されたときに、状態遷移をトリガーできるようにしたいと考えています。
ステートマシンの簡略版は次のようになります。
aasm :column => :state do
state :proposed, :initial => true
state :published
state :retired
event :publish do
transitions :from => :proposed, :to => :published
end
event :retire do
transitions :from => :published, :to => :retired
end
end
1 つのオプションは、リモート プロシージャ コール (RPC) スタイルを使用することです。ここでは、エンドポイントを提供/model/{ID}/publish
および/model/{ID}/retire
スタイル設定します。これはかなり簡単ですが、あまり RESTful ではありません。
state
私たちが検討したもう 1 つのオプションは、パラメーターを検査し、モデルの受信プロパティに基づいて遷移することです。これは、コンシューマーにとって API がよりシンプルに保たれているという点で「より良い」アプローチのように感じられますが、ロジックに関してコントローラーに多くの複雑さが追加されます。
Rails API の AASM 状態イベントのトリガーを実装する最良の方法は何ですか? オプションがありませんか?