如何在Hobo / Rails中从控制台重置用户密码

时间:2012-04-17 14:41:52

标签: ruby-on-rails hobo

rails框架Hobo非常棒,并且会自动创建第一个用户作为管理员用户(除非你不这样做)。我遇到的问题是在开发中运行rails我不记得密码是什么。这应该是微不足道的,因为我只是运行rails console,找到用户admin = User.find :first并重置密码(尝试)

 admin.password = 'Anything1234'
 admin.password_confirmation = admin.password
 admin.save
 >false
 admin.errors
 >{:current_password=>["is not correct"]}

即。这意味着在我可以更改现有密码之前,需要正确设置变量current_password。

我担心Hobo文档在这种情况下无效。有谁知道如何驱动Hobo用户模型重置密码?

2 个答案:

答案 0 :(得分:1)

是的,您需要在设置current_passwordpassword字段之前设置password_confirmation。这是为了阻止用户在不知道密码的情况下更改密码。

因此,您需要执行以下操作:

admin.current_password = 'password'
admin.password = 'Anything1234'
admin.password_confirmation = admin.password
admin.save

答案 1 :(得分:1)

4种可能的解决方案:

1:运行您的应用,然后点击忘记密码链接。该消息将显示在您的日志中,因此您无需设置邮件程序。

2:只需保存而不进行任何验证:

admin.save(false)

编辑:在Rails 3中,这是

admin.save(:validate => false)

3:另一种选择就是删除所有用户,以便重新获得初始用户输入屏幕。

4:如果你真的想要运行验证,你可以触发request_password_reset生命周期:

admin.lifecycle.request_password_reset!(Guest.new)

然后在开发日志中查找重置密码密钥

u.lifecycle.reset_password!(Guest.new, :key => 'a0a2db1035065fa7ad5d46d35669d206aee73668', :password=>"test123", :password_confirmation=>"test123")