我有一个state_machine,有三种可能的状态state1,state2,state3。
每当一个对象进入state_3时,我想触发一个事件event1。
在我的state_machine中,我有
after_transition :on => :state_3, :do => :event1.
但是,无论何时状态从state1更改为state3或state2更改为state3,都会正确触发事件。但是当状态转换从state3到state3时,不会触发event1。我怎样才能做到这一点?
我知道state3到state3不是state_transition。我可以使用类似after_save回调的东西,并检查状态是state3。但是我想知道有没有一种有效的方法来实现这一点是在state_machine?
我想在state3上触发事件到state3的原因是因为我有一个表单。只有回答了所有问题,表单才会到达state3。在回答完所有问题后,我正在计算商标。如果用户只是更改答案怎么办?状态将从state3更新到state3。这是我想要从state3触发事件到state3的情况。
答案 0 :(得分:0)
当用户更改他们的答案时,他们正在重新运行状态2到3的过渡。因此,在应用更改之前,请将状态更改为state2。
或者,创建更新状态并在应用更改之前将问题置于该状态。