Mailer kann nicht auf reset_token im Benutzermodell zugreifen

mit einem Problem konfrontiert, bei dem @ user.reset_token null zurückgibt.

app / views / user_mailer / password_reset.html.erb

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

Reset_token ist im Benutzermodell deklariert, wobei dieses Problem auftritt, wenn ich versuche, einen Sidekiq-Worker zu verwenden. Siehe Code unten.

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

Dieses Problem tritt NICHT auf, wenn ich keine Arbeiter benutze

app / models / user.rb

  def send_password_reset_email
    UserMailer.password_reset(self).deliver
  end

Möchten Sie wissen, durch was ich "@ user.reset_token" ersetzen kann? Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Danke im Voraus

Antworten auf die Frage(2)

Ihre Antwort auf die Frage