Почтовик не может получить доступ к reset_token в модели пользователя

столкнулся с проблемой, когда @ user.reset_token возвращает ноль.

приложение / просмотров / user_mailer / password_reset.html.erb

<%= link_to "Reset password", edit_password_reset_url(@user.reset_token, email: @user.email) %>

Reset_token объявляется в пользовательской модели, и эта проблема возникает, когда я пытаюсь использовать sidekiq worker. Обратитесь к коду ниже.

приложение / модели / user.rb

class User < ActiveRecord::Base

attr_accessor :reset_token

  def User.new_token
    SecureRandom.urlsafe_base64
  end  

  def send_password_reset_email
    PasswordResetWorker.perform_async(self.id)
  end  

private

  def create_reset_digest
    self.reset_token = User.new_token
    update_attribute(:reset_digest,  User.digest(reset_token))
    update_attribute(:reset_sent_at, Time.zone.now)
  end 

приложение / рабочие / password_reset_worker.rb

class PasswordResetWorker
  include Sidekiq::Worker
  sidekiq_options retry: false

  def perform(user_id)
    user = User.find(user_id)
    UserMailer.password_reset(user).deliver
  end
end

Приложение / отправители / user_mailer.rb

class UserMailer < ActionMailer::Base
  default from: "[email protected]"

  def password_reset(user)
    @user = user
    mail to: user.email, subject: "Password Reset"
  end
end

Эта проблема не происходит, когда я не использую работников

приложение / модели / user.rb

  def send_password_reset_email
    UserMailer.password_reset(self).deliver
  end

Хотите знать, что я могу заменить на "@ user.reset_token"? Дайте мне знать, если вам нужно больше информации. Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос