AASM回调无法正常工作

时间:2011-05-13 22:54:12

标签: ruby-on-rails ruby-on-rails-3

我正在使用AASM来管理状态,并且只是希望有一些列可以跟踪状态更改的时间,但回调似乎不起作用。当然,问题可能在于我的方法,我只是不确定。

        aasm_state :active, :after => :activate
        aasm_state :inactive
        aasm_state :deactivated, :after => :deactivate

        aasm_event :active do
          transitions :to => :active, :from => [:inactive]
          transitions :to => :active, :from => [:deactivated]
        end

        aasm_event :deactivated do
          transitions :to => :deactivated, :from => [:active]
        end

       def activate
         activated_at = Time.now
      end  

      def deactivate
        deactivated_at = Time.now
      end

2 个答案:

答案 0 :(得分:4)

在AASM的Rails 3版本中,您需要将回调应用于转换事件,而不是状态。 所以你的代码可以是 -

    aasm_state :active

    aasm_event :active, :after => :activate do 

        transitions :to => :active, :from => [:inactive]
        transitions :to => :active, :from => [:deactivated]
    end

答案 1 :(得分:1)

使用aasm时,您不必在模型上调用激活/停用功能。

你还需要保存模型,所以当你执行object.activate之后,object.save也会{{1}}(至少在我使用的最后一个版本中就是这样)

过渡似乎写得很好,所以我不认为那些是问题