2

私はAASMを使用しています。遷移で定義されたイベントがあります。イベントが発生し、モデルが :from 状態の場合に機能します。ただし、モデルが他の状態にある場合は、InValidTransition 例外がスローされます。

aasm_state :first
aasm_sate  :second
aasm_state :third

aasm_event :myevent do
  transitions :from => :second, :to => :third
end

さて、mymodel.myevent を実行すると! mymodel が :first または :third 状態の場合、aasm は InValidTransition をスローします。これらの状態にあるときにイベントを無視するように aasm に指示するにはどうすればよいですか?

4

3 に答える 3

3
aasm :column => :state, :whiny_transitions => false do
 state :first
 state  :second
 state :third

 event :myevent do
   transitions :from => :second, :to => :third
 end
end

これはあなたが望むことをするはずです。

于 2012-08-09T10:55:57.233 に答える
0

ステート マシンのポイントは、移行できる状態と移行できる状態を制限することです。上記の機能が必要な場合、ステート マシンの制約を使用するのはなぜですか? あなたはそれと同じことができます

def myevent
  self.update_attribute(:state, 'third') if self.state == 'second'
end

または、ステートマシンを引き続き使用したい場合は、これを行うことができます

aasm_event :myevent do 
    transitions :to => :second, :from => [:second]
    transitions :to => :second, :from => [:first]
end
于 2012-04-20T18:18:57.547 に答える