Я использую Delayed Job в качестве ActiveJob
серверной части очереди и пытаюсь отправлять электронные письма, используя Метод deliver_later
ActionMailer
. Я считаю, что у меня все правильно настроено для отложенной работы, и я запускаю фонового работника на своем компьютере для разработки.
Когда я отправляю электронное письмо для сброса пароля, я получаю следующую ошибку:
[Рабочий (хост: компьютер pid: 7240)] Задание ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper (id=1) FAILED (5 предыдущих попыток) с ActionView::Template::Error: Нет соответствий маршрута {:action=> "edit", :controller=>"password_resets", :email=>"[email protected]", :id=> nil} отсутствуют необходимые ключи: [:id]
Вот как я отправляю электронное письмо для сброса пароля. Это находится в моей модели User
:
def send_password_reset_email
UserMailer.password_reset(self).deliver_later
end
Моя настройка сброса пароля очень похожа на настройку в этой записи SO в том, что я не храню свой reset_token
в базе данных, а вместо этого использую его как виртуальный атрибут, и я думаю, что это может быть моей проблемой, но я хочу по возможности избегать сохранения этого значения. Есть ли способ передать сгенерированный reset_token
работнику отложенной работы? Также возможно, что моя проблема связана с чем-то другим.
Любая помощь будет принята с благодарностью!