NoMethodError - 用户的未定义方法`reset_password_token':Class:

时间:2014-02-18 05:13:37

标签: ruby-on-rails devise

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

@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我得到了这个错误。

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

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

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

1 个答案:

答案 0 :(得分:4)

经过大量挖掘devise的源代码后,我通过这样做得到了它。

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