今回 deviseでログイン機能を作った際、
プロフィール編集をパスワード入力しなくても更新できるように実装したく
詰まった所を簡潔にお伝えしたいと思います!!
最初の仕様としましてはパスワードを入力しないとプロフィールを変更できない状態でした、
ですが本来であれば更新するためのパスワード1箇所入れれば更新できるはず....
大体のアプリケーションには
新規のパスワード、変更確認用、プロフィールを更新するためのパスワードがあるかと思います。
でもなぜかその3つを入れないと入力が不足していますとエラーが出る状態でした。
この仕様は本当に不便ということでパスワードを更新用のみいれればプロフィールを変更できる仕様に変えましたのでそのコードを紹介します!!
models/user.rb
def update_without_current_password(params, *options)
if params[:password].blank? && params[:password_confirmation].blank?
params.delete(:password)
params.delete(:password_confirmation)
end
result = update(params, *options)
clean_up_passwords
result
end
controllers/users/registrations_controller.rb
def after_update_path_for(resource)
user_path(id: current_user.id)
end
def update_resource(resource, params)
resource.update_without_current_password(params)
end
ここまでは色々な先人様の記事を参考にして実装しましたが、
なぜかパスワードが不足していると言うエラーがまだ出る。
そこで
models/user.rb
attr_accessor :current_password
この1文を入れるだけで、問題は解決致しました!!
deviseでログイン機能、マイページを作成していてまだまだ学ぶことが沢山あるなと
しみじみ思う今日この頃でした。
同じような悩みを抱えてる方がスムーズにアプリケーションの実装が出来ますように
こちらにて備忘録として残しておきます!