我正在嘗試更改我的本地服務器的管理員密碼。Ruby on Rails管理員密碼
我用終端以下步驟:
User.find_by(email:'[email protected]')
u=_
u.password='newpassword'
u.save
然後我檢查,看看它實際上得到了改變通過鍵入u.password, 它顯示爲零。
我在這裏錯過了什麼嗎? 謝謝。
我正在嘗試更改我的本地服務器的管理員密碼。Ruby on Rails管理員密碼
我用終端以下步驟:
User.find_by(email:'[email protected]')
u=_
u.password='newpassword'
u.save
然後我檢查,看看它實際上得到了改變通過鍵入u.password, 它顯示爲零。
我在這裏錯過了什麼嗎? 謝謝。
最有可能您在模型中使用has_secure_password
。它編碼你的密碼,所以不可能通過控制檯讀取。這是沒有理由被關注的,而是預期的安全功能。嘗試使用新密碼登錄,一切都應該工作。
您可以執行u.save!
來檢查記錄是否實際保存或是否存在任何異常(錯誤)。
大多數情況下,您需要提供password
和password_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
每個人都那麼忙回答這個沒有問什麼是'U = _'? – 2014-09-10 22:08:49
@MichalSzyndel據推測OP是在irb中運行的(我猜這就是「在終端上」的意思)。 irb中的變量'_'是指最後一個表達式的結果。這與'u = User.find_by(email:'[email protected]')'相同 – iamnotmaynard 2014-09-10 22:28:54