O remetente não pode acessar reset_token no modelo de usuário

confrontado com um problema em que @ user.reset_token retorna nulo.

app / views / user_mailer / password_reset.html.erb

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

Reset_token é declarado no modelo de usuário, pelo qual esse problema ocorre quando tento usar um trabalhador sidekiq. Consulte o código abaixo.

app / models / 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 

app / workers / 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

app / mailers / 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

Esse problema NÃO acontece quando não uso trabalhadores

app / models / user.rb

  def send_password_reset_email
    UserMailer.password_reset(self).deliver
  end

Gostaria de saber o que posso substituir "@ user.reset_token"? Entre em contato se precisar de mais informações. Desde já, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion