充当状态机循环

时间:2011-07-06 22:16:55

标签: ruby-on-rails ruby loops acts-as-state-machine

在状态机中为rails插件act_as_state_machine添加循环是否有任何问题?

我正在尝试做这样的事情并且无法正常工作:

state :not_sent
state :sent

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

我想这样做,因为状态机是针对电子邮件的状态。有更多的陈述我在这里展示的那些,但由于实际原因,我只是展示了关于循环的部分。

所以现在,我想添加重新发送消息的可能性。所以我想在为状态机添加一个循环,但它不起作用。我尝试添加我的新状态“重新发送”,仅用于调试目的,它工作。但我需要一些方法在状态机中创建一个循环。

1 个答案:

答案 0 :(得分:2)

你实际上并没有循环任何东西,尽管它可能看起来像那样。如果你的开始和结束状态是相同的,你就不会进行过渡,而且aasm会跳过它,IIRC。想要做这样的事情的正常原因是重复一些过渡的一部分逻辑;在这种情况下,我将使用方法调用替换转换,或者添加一个中间状态,例如:重新发送,然后在重做您之后的工作后立即转换回已发送状态。