2016-03-15 51 views
3

我将我的数据从旧系统移植到用rails写的红宝石系统上。为了让旧用户注册,我计划将他们的旧数据传输到新系统中,但我不能传输他们的旧密码,所以我打算创建一个随机密码,然后创建一个密码重置链接,并向他们发送一封自定义电子邮件邀请他们到我的新系统。如何在设计中获取密码重置网址?

设计提供了这一点: user.send_reset_password_instructions

但是这发出了一个“忘记密码”的电子邮件给用户。我只想以某种方式获取忘记的密码url,以便我可以在自己的邮件中使用该URL并在稍后发送。我尝试过查找,但他们在任何地方谈论“send_reset_password_instructions”函数。任何想法我怎么能做到这一点?

回答

6

重置密码url由reset_password_tokenUser模型中形成。

因此保存reset_password_token就足以在稍后恢复reset password url

reset_password_token = 'XYZ' # Example token 
reset_password_url = Rails.application.routes.url_helpers.edit_user_password_path(reset_password_token: reset_password_token) 
+0

所以我可以手动设置使用Devise.friendly_token [0,20]认为reset_password_token并获取URL ..这应该工作的权利? –

+1

还有一个名为set_reset_password_token的方法,但受保护。你可以做一些像user.send(:set_reset_password_token)来设置一个新的令牌。 – Jose