(Devise) User コントローラーにカスタム メソッドを追加しました。
def confirm
@user = User.find(params[:id])
@user.skip_confirmation!
respond_to
if @user.save
//display success message
else
// display error message
end
end
end
それを介してユーザーを確認しようとすると、保存に失敗し、@user.errors に password と password_confirm の 2 つのエラーがあります。
Railsコンソールでも、試してみると
@user.skip_confirmation!
@save
ロールバックが発生し、保存に失敗します。
どんなアイデアでも大歓迎です..
追加情報
これを引き起こす問題は、
validates_presence_of :password, :password_confirmation
私のユーザーモデルで。ユーザーがサインアップ時にパスワードとパスワードの確認を入力した場合でも、これらは一緒にハッシュされて encrypted_password が作成されます。たとえば、コンソールでユーザーを見つけた場合、そのユーザーは encrypted_password を持っていますが、password も password_confirmation も持っていません。
私はこれを試しました
validates_presence_of :password, :password_confirmation, :on => :create
ただし、パスワードの変更画面でパスワードと確認の両方を入力するようにユーザーに強制することはありません。
これを回避する方法について何か考えはありますか?