【问题标题】:rails state machine not working inside rake taskrails 状态机在 rake 任务中不起作用
【发布时间】:2013-12-05 19:04:37
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我不能说什么是错的,因为没有足够的信息。但我可以建议您将! 添加到方法task_finished(这样您将拥有tasko.task_finished!)。这样,StateMachine 会引发异常 - 您会看到问题所在。

    【讨论】:

    • 谢谢,这帮助我找到了阻碍的验证。欣赏!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2014-05-27
    • 1970-01-01
    相关资源
    最近更新 更多