我正在關注此解決方案:Rails 4 - Allow password change only if current password is correctRails 4,如何在密碼更改時詢問當前密碼?
但是無論我輸入的是否是正確的當前密碼,我的密碼都會更新。這裏是我的代碼:
員工型號:
class Employee < ActiveRecord::Base
attr_accessor :password, :current_password
def self.authenticate(user, password)
employee = find_by_code(user)
if employee && employee.password_hash == BCrypt::Engine.hash_secret(password, employee.password_salt)
employee
end
end
validates_presence_of :current_password, if: :validate_password?, on: :update
validate :current_password_is_correct, if: :validate_password?, on: :update
def current_password_is_correct
if Employee.authenticate(code, current_password) == false
errors.add(:current_password, "Wrong password.")
end
end
def validate_password?
!password.blank?
end
end
如果我改變current_password_is_correct到這一點,正確地顯示了錯誤:
def current_password_is_correct
if Employee.authenticate(code, current_password) == false || true
errors.add(:current_password, "Wrong password.")
end
end
這讓我覺得,可能是密碼前更新這個驗證被執行。我怎樣才能確定這一點,如果是這樣,我怎樣才能使它按正確的順序執行?
感謝
您使用設計? – matanco