Ruby on rails 充当状态机循环

Ruby on rails 充当状态机循环,ruby-on-rails,ruby,loops,acts-as-state-machine,Ruby On Rails,Ruby,Loops,Acts As State Machine,在状态机中为rails插件acts_as_state_机器添加循环有问题吗 我正在尝试做类似的事情,但不起作用: state :not_sent state :sent event :test do transitions :from => :not_sent, :to => :sent transitions :from => :sent, :to => :sent end 我之所以要这样做,是因为状态机用于表示电子邮件的状态。我在这里展示的还有更多的状态,但出

在状态机中为rails插件acts_as_state_机器添加循环有问题吗

我正在尝试做类似的事情,但不起作用:

state :not_sent
state :sent

event :test do
 transitions :from => :not_sent, :to => :sent
 transitions :from => :sent, :to => :sent
end
我之所以要这样做,是因为状态机用于表示电子邮件的状态。我在这里展示的还有更多的状态,但出于实际原因,我只是展示了关于循环的部分


现在,我想添加重新发送消息的可能性。所以我想在状态机中添加一个循环,但它不起作用。我试着添加一个新的状态“重新发送”,只是为了调试的目的,结果成功了。但是我需要一些方法在状态机中创建一个循环。

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