1

aasm gemを使用した次のモデルを考えます。

class Job
  include AASM

  aasm do
    state :sleeping, :initial => true
    state :running, :cleaning

    event :run do
      transitions :from => :sleeping, :to => :running
    end

    event :clean do
      transitions :from => :running, :to => :cleaning
    end

    event :sleep do
      transitions :from => [:running, :cleaning], :to => :sleeping
    end
  end
end

Web アプリケーションには 2 種類のユーザー (通常のユーザーとスーパー ユーザー) がいます。必要なイベントを呼び出すことができるスーパー ユーザー タイプが必要です。state=cleaning のジョブで #run を呼び出すようなものです。

したがって、私が理解しているように、実行時にトランジションを解決する必要があります。ユーザーがスーパーユーザーの場合、fromはすべての状態になりますが、ユーザーがスーパー ユーザーでない場合は、それぞれの状態が異なります。

それを行うためのきれいな方法はありますか?あなたはなにか考えはありますか?

4

1 に答える 1