запись времени переходов в state_machine Rails - PullRequest
0 голосов
/ 24 октября 2011

У меня есть модель Student, которая может выполнять ряд действий. Я создаю state_machine для последних действий.

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

Я думал, что эта функция запишет время последнего действия (независимо от того, какое последнее действие). Почему-то это не работает, и я получил пустое поле last_action_at, даже если я успешно перешел из одного состояния в другое.

Что я сделал неправильно? Как я могу зафиксировать время последней транзакции?

Спасибо.

1 Ответ

3 голосов
/ 24 октября 2011

Намного проще было бы создать ловушку on_transition и записать там время.

event :xyz do
  transitions :to => :state1, :from => :state0, :on_transition => :method_name
end

def method_name
  #set time here
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...