2012-04-17 50 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