NoMethodError - 未定义的方法`reset_password_token'为用户:类: [英] NoMethodError - undefined method `reset_password_token' for User:Class:

查看:217
本文介绍了NoMethodError - 未定义的方法`reset_password_token'为用户:类:的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的 Rails 应用程序中,我有一个管理员表单来创建普通用户。在创建 操作中,我正在生成重置密码令牌,并向用户发送欢迎邮件在其中重置他的密码。这是我的代码。

In my Rails application, I have a form for admin to create normal users. In create action, I am generating a reset password token, and sending a welcome mail to the user, with a link in it to reset his password. This is my code.

@user = User.new params[:user]
@user.reset_password_token = User.reset_password_token
@user.reset_password_sent_at = Time.now.utc
if @user.save
  UserMailer.welcome_email(@user).deliver
  ..

这工作正常,但是我有另一个应用程序具有相同的代码,但使用 devise 3.2.2 其中我得到这个错误。

This works fine, but I have another app with the same code, but uses devise 3.2.2 in which I get the this error.

NoMethodError - undefined method `reset_password_token' for User:Class:

我看到该方法已被删除。如何生成重置密码令牌并将其发送给用户?

I see that the method has been removed. How can I generate a reset password token and send it to a user?

注意:我不想发送默认的重置密码电子邮件

推荐答案

经过很多挖掘到 devise 的源代码,我通过这样做得到了。

After a lot of digging into devise's source code, I got it to work by doing this.

raw, enc = Devise.token_generator.generate(User, :reset_password_token)
@user.reset_password_token = enc
@user.reset_password_sent_at = Time.now.utc
if @user.save
  UserMailer.welcome_email(@user, raw).deliver
  ..

使用 raw 作为 reset_password_token

这篇关于NoMethodError - 未定义的方法`reset_password_token'为用户:类:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆