我正在尝试将遗留应用程序迁移到Rails 3并更改身份验证以使用Devise。我已经创建了模型和迁移并导入了所有用户数据。
我不打算迁移密码,因为现有的方案不是我们今后想要使用的方案,但我希望能够为用户提供简单的体验。
理想情况下,我想捕获登录错误,然后使用旧字段检查密码,如果匹配,则用它更新设计密码。
我可以看到Warden给了我一个可以捕获错误的回调,所以我希望我可以捕获登录错误。
但是因为所有密码(在Devise中)都是空白的,因为encrypted_password字段为空,我会收到与哈希有关的错误。
有没有办法可以使用随机密码更新所有用户帐户?
我在Devise :: Models :: DatabaseAuthenticatable中看到有一种方法'password ='但是如果我这样称,例如在应用程序的rails控制台中:
User.find(1).password=('new')
=> "new"
我只返回相同的纯文本字符串('new')并保存用户记录帖子,这不会填充encrypted_password字段。
我已经四处寻找但似乎无法找到它。任何建议都非常感谢!
答案 0 :(得分:1)
好的,以防万一其他人像我过去24小时一样,这就是你设置密码的方式:
user = User.find(id)
user.password = 'new-password'
user.save
非常简单:)