2011-04-28 45 views
1

我在尝试将旧应用程序迁移到Rails 3,并将身份验证更改为使用Devise。我创建了模型和迁移并导入了所有的用户数据。将现有用户模型迁移到设计

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

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

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

但是因为所有密码(在设计中)都是空白的,所以我得到了有关散列的错误,因为encrypted_pa​​ssword字段为空。

有没有一种方法可以用随机密码更新所有用户帐户?

我在Devise :: Models :: DatabaseAuthenticatable中看到有一个方法'password =',但如果我打电话给它,例如在轨控制台应用程序:

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

我只是得到相同的纯文本字符串返回(“新”),并保存用户记录后这个不填充encrypted_pa​​ssword领域。

我周围搜索,但似乎无法找到它。任何建议非常感谢!

+0

我只是想出了上面的工作很好 - 我在另一个没有完全运行设计迁移的开发盒上尝试它。卫生署! – Iain 2011-04-30 08:09:51

回答

1

好,以防万一别人是布为首的,因为我已经在过去24小时内,这里是你如何设置密码:

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

其实很简单:)