使用state_machine

时间:2012-03-21 18:26:09

标签: ruby-on-rails state-machine

我正在使用此状态机来管理Invite对象上的“state”属性

https://github.com/pluginaweek/state_machine

我希望有一个send_invite方法,将状态设置为“发送”,发送邀请,然后将状态设置为“已发送”或“can_not_send”是否存在错误

好像我应该能够在状态机DSL上做到这一点,我错了吗?

或者我应该添加一个正常的方法?

   state_machine :initial => :pending do
        event :send do
          transition :pending => :sending
        end

        event :invite_sent do
          transition :sending => :invited
        end

        event :error_sending do
          transition :sending => :error
        end    
    end

    def send_invite
       send
       try 
         .... code to send invite...
         invite_sent
       catch
          error_sending!
       end 
    end 

谢谢

1 个答案:

答案 0 :(得分:0)

状态机是为了在一系列无状态Web请求上提供虚拟“状态”而构建的。由于你是在一个请求中完成这一切,所以不一定要使用这么重的东西 - 但如果你喜欢使用它,它应该可以工作。