0

(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_pa​​ssword が作成されます。たとえば、コンソールでユーザーを見つけた場合、そのユーザーは encrypted_pa​​ssword を持っていますが、password も password_confirmation も持っていません。

私はこれを試しました

validates_presence_of :password, :password_confirmation, :on => :create

ただし、パスワードの変更画面でパスワードと確認の両方を入力するようにユーザーに強制することはありません。

これを回避する方法について何か考えはありますか?

4

2 に答える 2