我正在使用state_machine gem。我已经在我的一个模型上成功使用了state_machine gem,但我不能让它在另一个模型上工作。在我的任务模型中,这是状态机:
state_machine :state, :initial => :incomplete do
event :task_finished do
transition :incomplete => :needs_approval
end
end
创建新任务时,状态列最初设置为不完整,因此我知道state_machine在某种程度上有效。问题是在rake任务中我调用:task_finished事件但它不起作用。这是rake任务:
task :change_it => :environment do
puts "task is working"
@tasks = Task.already_expired
@tasks.each do |tasko|
tasko.task_finished
puts "Kalabar" + tasko.inspect + "now time is:" + DateTime.now.to_s
puts "time_frame is:" + tasko.time_frame.to_s
end
end
如何让它发挥作用?
任务正在完成,因为put语句正在放入服务器,但状态不会从:incomplete更改为:needs_approval。我该如何解决这个问题?
答案 0 :(得分:0)
我不能说有什么不对的信息是不够的。但我建议您将!
添加到方法task_finished
(这样您就会tasko.task_finished!
)。通过这种方式,StateMachine会引发异常 - 您将看到错误。