2011-05-13 73 views
2

我正在使用AASM來管理狀態,只是希望有一些列可以跟蹤狀態發生變化的時間,但回調似乎並不奏效。當然,問題可能出在我的方法上,我只是不確定。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 

回答

1

當使用aasm時,您不要在您的模型上調用您的激活/停用功能。

您還需要保存模型,所以當你object.activate,之後還做object.save(至少是怎麼回事,在過去的版本,我用)

轉變似乎被寫入好了,我不認爲這些是問題

4

在Rails 3版本的AASM中,您需要應用回調來轉換事件,而不是狀態。 所以你的代碼可以是 -

aasm_state :active 

    aasm_event :active, :after => :activate do 

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