конечный автомат рельсов не работает внутри задачи rake

Я использую гем state_machine. Я уже успешно использую гем state_machine на одной из своих моделей, но не могу заставить его работать на другой. В моей модели задач вот конечный автомат:

state_machine :state, :initial => :incomplete do
    event :task_finished do
        transition :incomplete => :needs_approval 
    end
end

Когда создается новая задача, столбец состояния изначально устанавливается как незавершенный, поэтому я знаю, что state_machine отчасти работает. Проблема в том, что в задаче rake я вызываю событие :task_finished, но оно не работает. Вот задача грабли:

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, как должно. Как это исправить?


person Philip7899    schedule 05.12.2013    source источник


Ответы (1)


Я не могу сказать, что не так, недостаточно информации. Но я могу предложить вам добавить ! к методу task_finished (так что у вас будет tasko.task_finished!). Таким образом, StateMachine вызовет исключение — и вы увидите, что не так.

person gotva    schedule 05.12.2013
comment
Спасибо, это помогло мне найти подтверждение, которое мешало. Ценить это! - person Philip7899; 06.12.2013