0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

deviseユーザー情報をパスワードなしで更新するとき詰まった話

Last updated at Posted at 2021-10-24

今回 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

ここまでは色々な先人様の記事を参考にして実装しましたが、
なぜかパスワードが不足していると言うエラーがまだ出る。

deviseのパスワード更新が出来ない

そこで

models/user.rb

attr_accessor :current_password

この1文を入れるだけで、問題は解決致しました!!

deviseでログイン機能、マイページを作成していてまだまだ学ぶことが沢山あるなと
しみじみ思う今日この頃でした。

同じような悩みを抱えてる方がスムーズにアプリケーションの実装が出来ますように
こちらにて備忘録として残しておきます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?