2012-04-02 72 views

回答

5

更改密碼驗證只能在創建操作。

validates :password, presence: true, 
        length: { minimum: 6 }, 
        on: :create 
+1

請注意,如果您這樣做,並且您有一種機制允許您的用戶更改其密碼(例如忘記密碼),則他們將能夠設置太短的新密碼。原因是長度驗證不會在密碼更新時啓動。 – 2014-07-03 09:55:22

0

has_secure_password實際上是ActiveModel的一部分,它本身不是寶石。 bcrypt gem只是用來散列password_digest屬性。

的has_secure_password方法其實很短(source here),幷包含需要密碼才能證實一行:

# File activemodel/lib/active_model/secure_password.rb, line 34 
    validates_confirmation_of :password 
    validates_presence_of  :password_digest 

因此,覆蓋在你的config /初始化創建一個修改版本的has_secure_password方法文件夾應該工作。註釋掉「validates_confirmation_of」行會關閉密碼確認。你也可以重寫這個方法,當然,就像你試圖在你的問題中那樣做一個選項哈希。

+0

請問什麼是重寫has_secure_password方法的步驟? – medBo 2013-07-31 01:42:56

1

如果您根本不需要密碼確認,您可以簡單地不設置:password_confirmation字段並且不會觸發驗證。

點擊這裏瞭解更多:https://github.com/rails/rails/pull/5131

軌道4,5編輯:由於大力引進PARAMS這是不相關了。只需從註冊表單中刪除確認字段,參數就不會通過。

+0

感謝您發佈這個! – LandonSchropp 2013-05-14 07:07:04