私は、hereコードに基づいてユーザーパスワードの編集を処理するカスタムコントローラを持っています。パスワード/パスワードの妥当性チェックの妥当性チェック
ユーザーモデル
attr_accessible :password, :password_confirmation, :username, :login
...
devise :database_authenticatable,
:lockable,
:registerable,
:recoverable,
:rememberable,
:trackable
PasswordsController
expose(:user) { current_user }
def update
if user.update_with_password(params[:user])
sign_in(user, :bypass => true)
flash[:notice] = "success"
else
render :edit
end
end
私の編集パスワードフォームがhereに位置しています。
問題は、編集パスワードフォームに何を入力しても(または入力しなくても)、「成功」フラッシュメソッドが表示されることです。
どのように動作しますか?確認フィールドが一致しないか、current_passwordが間違っていると、パスワードは変更されません。 – Dex
これは、password_confirmationに何があるかにかかわらず、:passwordにあるものに変わります。 –
if文を 'params [:user] [:password] == params [:user] [:password_confirmation]'に変更し、bodyに 'user.update_with_password(params [:user])'を入れるとどうなりますか? ? –