我有一个可以执行一系列操作的学生模型。我为最新动作创建了一个state_machine。
state_machine :last_action, :initial => :get_invited do
event :enroll do
transition [:get_invited, :accept, :schedule] => :enroll
end
end
我创建了一个StudentObserver类,它扩展了ActiveRecord :: Observer以记录上一次操作的时间,如下所示:
def after_transition(student, transition)
student.last_action_at = Time.now
end
我认为这个函数会记录最后一个动作的时间(无论最后一个动作是什么)。不知怎的,它不起作用,即使我成功地从一个状态转移到另一个状态,我也得到了last_action_at的空字段。
我做错了什么?如何捕获最新交易的时间?
谢谢。
答案 0 :(得分:3)
一个更简单的解决方案是创建一个on_transition挂钩并记录那里的时间。
event :xyz do
transitions :to => :state1, :from => :state0, :on_transition => :method_name
end
def method_name
#set time here
end