Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails AASM回调不起作用_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails AASM回调不起作用

Ruby on rails AASM回调不起作用,ruby-on-rails,ruby-on-rails-3,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 trans

我正在使用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

当使用aasm时,您不只是调用模型上的激活/停用功能

您还需要保存模型,因此当您执行
object.activate
,之后还要执行
object.save
(至少我上次使用的版本是这样的)


转换似乎写得很好,所以我认为这不是问题所在

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

    aasm_state :active

    aasm_event :active, :after => :activate do 

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