Ruby on rails 记录机器轨道状态的转换时间
我有一个学生模型,他可以执行一系列动作。我为最新的动作创建一个状态机Ruby on rails 记录机器轨道状态的转换时间,ruby-on-rails,ruby,state-machine,Ruby On Rails,Ruby,State Machine,我有一个学生模型,他可以执行一系列动作。我为最新的动作创建一个状态机 state_machine :last_action, :initial => :get_invited do event :enroll do transition [:get_invited, :accept, :schedule] => :enroll end end 我创建了一个StudentObserver类,该类扩展ActiveRecord::Observer以记录最后一
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
我想这个函数会记录最后一个动作的时间(不管最后一个动作是什么)。不知何故,它不起作用,即使我成功地从一个州过渡到另一个州,我也得到了最后一个行动的空字段
我做错了什么?如何捕获最新交易的时间
谢谢。一个更简单的解决方案是创建一个on_转换挂钩,并在那里记录时间
event :xyz do
transitions :to => :state1, :from => :state0, :on_transition => :method_name
end
def method_name
#set time here
end
一个更简单的解决方案是创建一个on_转换钩子,并在那里记录时间
event :xyz do
transitions :to => :state1, :from => :state0, :on_transition => :method_name
end
def method_name
#set time here
end
转换后是否保存记录?我认为状态机会自动保存记录。在任何情况下,我都可以看到我的记录的状态在每次交易后都会更新。您是否在转换后保存记录?我认为状态机会自动保存记录。在任何情况下,我都可以在每次交易后看到我的记录状态更新。谢谢Wahaj。你的建议行得通。如果我能为所有事件写一句话,而不是重复,那就太好了:关于所有事件的过渡。谢谢Wahaj。你的建议行得通。如果我能为所有事件编写一条语句,而不是重复:on_transition to all events,那就太好了。