Ruby on rails AASM回调不起作用
我正在使用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_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