2011-06-08 16 views
0

Chapter 7從邁克爾哈特爾的教程存在具有定義爲attr_accessor和還與存在驗證作爲attr_accessible密碼屬性的用戶模型< code here>。更新從已經需要attr_acessors檢索到的對象的屬性邁克爾哈特爾的

問題是:如果我檢索一個存在的用戶並嘗試更新其電子郵件,ruby會拋出一個聲明其密碼的異常,並且每次我想更新任何其他屬性時我都會重新設置密碼。例如:

User.first.update_attributes!(:email => "[email protected]") 
ActiveRecord::RecordInvalid: Validation failed: Password can't be blank, Password is too short (minimum is 6 characters) 

我添加「:關於=>:創建」旁邊的密碼的存在驗證器,它似乎解決問題。這是關於登錄系統的正確解決方案嗎?

任何完成Michael Harlt教程的人都知道這是錯誤還是他的真實意圖?

回答

0

您希望將驗證程序添加到密碼哈希字段,以便它是存儲在數據庫中的實際密碼。如果您使password=函數設置哈希列的值,那麼此方法將獨立於實際的密碼虛擬變量工作。

+0

這可以工作,但我也想確保用戶填寫創建步驟的密碼字段,這就是爲什麼我添加了密碼(虛擬的)的存在驗證程序。 – 2011-06-08 18:49:24

+0

如果您爲password_hash字段創建驗證器,那麼它將工作,因爲password =會更新該列。 – Maz 2011-06-10 11:08:59

+0

聰明的主意!謝謝你Maz! – 2011-06-10 11:18:11

相關問題