has_secure_password で認証機能を実装していた パスワード変更機能を追加でつくることになり、パスワード変更画面で、現在のパスワード欄と、新パスワード欄と新パスワード確認欄を設けて、User モデルでいろいろバリデーションを書いた。 現在のパスワード欄の入力が妥当かは、 has_secure_password で使っている authenticate を利用した def authenticate(unencrypted_password) BCrypt::Password.new(password_digest) == unencrypted_password && self end うまくゆかなかった user オブジェクトに password を格納した時点で、user.password_digest が更新されているのかもしれないと思った 試しに以下のような befor