将现有用户模型迁移到Devise

时间:2011-04-28 17:10:37

标签: ruby-on-rails authentication passwords migration devise

我正在尝试将遗留应用程序迁移到Rails 3并更改身份验证以使用Devise。我已经创建了模型和迁移并导入了所有用户数据。

我不打算迁移密码,因为现有的方案不是我们今后想要使用的方案,但我希望能够为用户提供简单的体验。

理想情况下,我想捕获登录错误,然后使用旧字段检查密码,如果匹配,则用它更新设计密码。

我可以看到Warden给了我一个可以捕获错误的回调,所以我希望我可以捕获登录错误。

但是因为所有密码(在Devise中)都是空白的,因为encrypted_pa​​ssword字段为空,我会收到与哈希有关的错误。

有没有办法可以使用随机密码更新所有用户帐户?

我在Devise :: Models :: DatabaseAuthenticatable中看到有一种方法'password ='但是如果我这样称,例如在应用程序的rails控制台中:

User.find(1).password=('new')
 => "new"

我只返回相同的纯文本字符串('new')并保存用户记录帖子,这不会填充encrypted_pa​​ssword字段。

我已经四处寻找但似乎无法找到它。任何建议都非常感谢!

1 个答案:

答案 0 :(得分:1)

好的,以防万一其他人像我过去24小时一样,这就是你设置密码的方式:

user = User.find(id)
user.password = 'new-password'
user.save

非常简单:)