Запись в базу данных отложена в рельсах контроллера? - PullRequest
0 голосов
/ 12 февраля 2010

Я использую authlogic для генерации скоропортящегося токена и отправки его пользователю для активации его учетной записи, а также отправки почты позже с отложенной работой. Вот так:

  def deliver_activation_instructions!
    reset_perishable_token!
    Notifier.send_later(:deliver_activation_instructions, self)
  end

То, что я вижу, это то, что скоропортящийся токен, написанный вызовом reset_perishable_token, не является тем, который был отправлен пользователю по электронной почте. Если я использую send_later, есть ли шанс, что работник заберет старые значения из базы данных? Я думал, что вызов Notifier.send_later будет происходить только после того, как токен был написан .... Или есть что-то, чего я не понимаю о том, как это работает?

1 Ответ

0 голосов
/ 21 февраля 2010

Чтобы ответить на мой вопрос, проблема была не в плохой записи в базу данных, а в том, что библиотека authlogic автоматически обновляет скоропортящийся токен при каждом сохранении записи в базе данных. Я отправлял токен, затем сохранял запись пользователя, которая сбрасывала токен! Есть настройка конфигурации, которая мне нужна: disable_perishable_token_maintenance = true

Это помогло и исправило мою ошибку

...