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。想要做这样的事情的正常原因是重复一些逻辑,这是过渡的一部分;在这种情况下,我会用方法调用替换转换,或者添加一个中间状态,如:重新发送,然后在重做你所追求的工作后立即转换回发送状态。

于 2011-07-06T23:46:47.673 回答