Почтовик не может получить доступ к 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"? Дайте мне знать, если вам нужно больше информации. Заранее спасибо.