在我的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:
我看到该方法已被删除。如何生成重置密码令牌并将其发送给用户?
注意:我不想发送默认的重置密码电子邮件
答案 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