1

railsプラグインacts_as_state_machineのステートマシンにループを追加することに問題はありますか?

私はこのようなことをしようとしていますが、機能していません:

state :not_sent
state :sent

event :test do
 transitions :from => :not_sent, :to => :sent
 transitions :from => :sent, :to => :sent
end

ステートマシンは電子メールの状態用であるため、これを実行したいと思います。ここで示したものは他にもありますが、実際的な理由から、ループに関するセクションを示しています。

そこで、メッセージを再送する可能性を追加したいと思います。そこで、ステートマシンにループを追加することを考えましたが、機能しません。デバッグの目的で、新しい状態「再送」を追加しようとしましたが、機能しました。しかし、ステートマシンでループを作成する方法が必要です。

4

1 に答える 1

2

そのように見えるかもしれませんが、実際には何もループしていません。開始状態と終了状態が同じ場合、移行は行われておらず、aasm はそれをスキップします、IIRC. そのようなことをしたい通常の理由は、移行の一部であるロジックを繰り返すことです。この場合、トランジションをメソッド呼び出しに置き換えるか、:resending のような中間状態を追加します。これにより、作業をやり直した後、すぐに送信済み状態に戻ります。

于 2011-07-06T23:46:47.673 に答える