5

Rails アプリでact_as_state_machine (AASM)を使用して、従来の有限ステート マシンである状態から次の状態へのモデルのフローを制御しています。アプリケーション用の API を構築しています。その一環として、Rails モデルがupdateAPI ユーザーによって 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 状態イベントのトリガーを実装する最良の方法は何ですか? オプションがありませんか?

4

1 に答える 1