我試圖阿邁勒·庫馬爾液,但遺憾的是它並沒有幫助我解決同樣的問題,所以這裏被修改的實際項目測試的解決方案版本。
以下是devise/models/validatable的代碼。RB模塊
protected
# Checks whether a password is needed or not. For validations only.
# Passwords are always required if it's a new record, or if the password
# or confirmation are being set somewhere.
def password_required?
!persisted? || !password.nil? || !password_confirmation.nil?
end
,當你離開空密碼和確認密碼字段,同時更新用戶信息,因爲這種情況始終爲false驗證失敗:
!password.nil? || !password_confirmation.nil?
密碼和password_confirmation字段等於空字符串「」,這永遠不會等於零。所以你可以通過重寫password_required來解決這個問題?方法在你的用戶模型中並更改nil?檢查空白?檢查。
protected
def password_required?
!persisted? || !password.blank? || !password_confirmation.blank?
end
認爲這是解決這個問題的最簡單方法,它不會破壞原始邏輯。也許這是設計的錯誤。
我能夠使用它來處理我的用例,從控制檯添加用戶時跳過密碼要求(因爲我使用的是devise_invitable模塊)。爲了實現這個目標,我必須將'!persisted?'改成'persisted?'。 –