rails状态机在rake任务中不起作用

时间:2013-12-05 19:04:38

标签: ruby-on-rails ruby-on-rails-4 rake state-machine rake-task

我正在使用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。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不能说有什么不对的信息是不够的。但我建议您将!添加到方法task_finished(这样您就会tasko.task_finished!)。通过这种方式,StateMachine会引发异常 - 您将看到错误。