2014-09-10 113 views
-3

我正在嘗試更改我的本地服務器的管理員密碼。Ruby on Rails管理員密碼

我用終端以下步驟:

User.find_by(email:'[email protected]') 
u=_ 
u.password='newpassword' 
u.save 

然後我檢查,看看它實際上得到了改變通過鍵入u.password, 它顯示爲零。

我在這裏錯過了什麼嗎? 謝謝。

+0

每個人都那麼忙回答這個沒有問什麼是'U = _'? – 2014-09-10 22:08:49

+2

@MichalSzyndel據推測OP是在irb中運行的(我猜這就是「在終端上」的意思)。 irb中的變量'_'是指最後一個表達式的結果。這與'u = User.find_by(email:'[email protected]')'相同 – iamnotmaynard 2014-09-10 22:28:54

回答

1

最有可能您在模型中使用has_secure_password。它編碼你的密碼,所以不可能通過控制檯讀取。這是沒有理由被關注的,而是預期的安全功能。嘗試使用新密碼登錄,一切都應該工作。

-1

您可以執行u.save!來檢查記錄是否實際保存或是否存在任何異常(錯誤)。

1

大多數情況下,您需要提供passwordpassword_confirmation來更改實際密碼。因此,請嘗試以下操作:

user = User.find_by(email:'[email protected]') 
user.password    = 'newpassword' 
user.password_confirmation = 'newpassword' 
user.save 

如果不起作用,那麼您可能要讀取錯誤消息。也許你的對象是無效的:

user.valid? 
puts user.errors 
# => prints list of errors 

瞭解更多關於SecurePassword:http://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html