Я использую Delayed Job как мой ActiveJob
очередей бэкэнда, и я пытаюсь отправить электронную почту с помощью ActionMailer
«s deliver_later
метода. Я считаю, что у меня все настройки Delayed Job правильные, и я запускаю фона рабочего на моей машине разработки.ActionMailer не может найти reset_token, отчеты отсутствует: идентификатор ключа
Когда я посылаю письмо для сброса пароля, я получаю следующее сообщение об ошибке:
[Worker(host:Computer pid:7240)] Job ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper (id=1) FAILED (5 prior attempts) with ActionView::Template::Error: No route matches {:action=>"edit", :controller=>"password_resets", :email=>"[email protected]", :id=> nil} missing required keys: [:id]
Вот как я отправка электронной почты для сброса пароля. Это находится в моей User
модели:
def send_password_reset_email
UserMailer.password_reset(self).deliver_later
end
Моя установка сброса пароля очень похож на тот, на this SO post в том, что я не хранить мой reset_token
в базе данных и вместо этого иметь его в качестве виртуального атрибута, и я думаю, что это может быть моей проблемой, но я хочу, чтобы избежать сохранения этого значения, если это возможно. Есть ли способ передать сгенерированный reset_token
работнику с задержкой работы? Возможно также, что моя проблема связана с чем-то другим.
Любая помощь была бы принята с благодарностью!
Спасибо за разделение вашего решения. Вскоре после того, как я написал свое решение, я пошел по маршруту, подобному этому. Я создал отдельное задание и передал токен сброса пароля в полезную нагрузку задания следующим образом: этот код вызывается в модели «Пользователь». 'SendPasswordResetJob.perform_later (self.id, self.password_reset_token)' – Alexander