gpt4 book ai didi

ruby-on-rails-3 - Ruby on Rails with Sorcery 重置密码电子邮件有一个未定义的方法错误

转载 作者:行者123 更新时间:2023-12-04 06:05:43 31 4
gpt4 key购买 nike

使用 Sorcery 0.7.4 和 Rails 3.1.1 进行身份验证。
一切都很顺利,直到我尝试设置密码重置。

激活工作完美并发送电子邮件,但由于某种原因,我在尝试发送重置密码电子邮件时收到此错误。

undefined method `reset_password_email' for nil:NilClass

我完全复制了教程,当我在控制台中进行快速测试时,它按预期发送了电子邮件。在控制台中:
user = User.find(1)
user.deliver_reset_password_instructions!

在实际 Controller 中,它通过从表单提交的电子邮件找到用户,在日志中我可以看到它正在检索正确的用户并设置 token ,但如上所示出错并回滚。

我检查了 gem 代码中的 delivery_reset_password_instructions!它似乎没有理由失败。
PasswordResetsController:

@user = User.find_by_email(params[:email])
@user.deliver_reset_password_instructions! if @user

以下是从 gem 代码中复制的:
Instance Method in Gem:

def deliver_reset_password_instructions!
config = sorcery_config
# hammering protection
return false if config.reset_password_time_between_emails && self.send(config.reset_password_email_sent_at_attribute_name) && self.send(config.reset_password_email_sent_at_attribute_name) > config.reset_password_time_between_emails.ago.utc
self.send(:"#{config.reset_password_token_attribute_name}=", TemporaryToken.generate_random_token)
self.send(:"#{config.reset_password_token_expires_at_attribute_name}=", Time.now.in_time_zone + config.reset_password_expiration_period) if config.reset_password_expiration_period
self.send(:"#{config.reset_password_email_sent_at_attribute_name}=", Time.now.in_time_zone)
self.class.transaction do
self.save!(:validate => false)
generic_send_email(:reset_password_email_method_name, :reset_password_mailer)
end
end


The method called above for mailing:

def generic_send_email(method, mailer)
config = sorcery_config
mail = config.send(mailer).send(config.send(method),self)
if defined?(ActionMailer) and config.send(mailer).superclass == ActionMailer::Base
mail.deliver
end
end

同样,所有必需的邮件程序点点滴滴都在那里,并且可以从控制台工作。

最佳答案

在巫术初始化程序中取消注释此行

user.reset_password_mailer = UserMailer  
user.reset_password_email_method_name = :reset_password_email

关于ruby-on-rails-3 - Ruby on Rails with Sorcery 重置密码电子邮件有一个未定义的方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8400205/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com