2012-04-17 102 views
1

Raobo框架Hobo非常出色,并以管理员用户的身份自动创建第一个用户(除非您不要求)。我遇到的问题是开发中的rails问题,我不记得密码是什么。这应该是微不足道的,因为我只是运行rails console,找到用户admin = User.find :first和重置密码(试图)如何从Hobo/Rails中的控制台重置用户密码

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

即其含义是在我可以更改现有密码之前,需要正确设置变量current_password。

恐怕Hobo文档在这种情况下不起作用。有谁知道如何驱动Hobo用户模型重置密码?

回答

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") 
+0

谢谢,我尝试了1 - 但链接因为其他原因不起作用。没有验证的保存是我错过的显而易见的一个! 3是我没有更好的东西而去的,4对于它是如何工作的有一个正确的看法是很棒的。 – meesern 2012-04-19 09:26:19

+0

坦率地说#3是我对这类问题最常见的选择。我的大部分项目都有一个脚本来建立一个初始数据库,所以我删除并重建数据库。 – 2012-04-19 14:39:26

1

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

因此,你需要做这样的事情:

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

瑞安,我认为,是我的观点 - 如果你不知道当前的密码,你不能保存一个新的密码。问题是什么呢? – meesern 2012-04-19 09:18:53