意外と簡単にできた。パスワードを入力させずにユーザー情報を更新する方法
概要
今回の記事は表題の通り「パスワードを入力させずにユーザー情報を更新する方法」です。
Railsでとあるアプリケーションを作成中に、どうにかしてパスワードを入力させずにユーザー情報を更新できないものかと考えました。
updateメソッドではパスワードの入力を必須としているようです。
で、よく考えてみたらSNSやECサイトなどの多くのWEBアプリケーションは、ユーザー名やプロフィールなどをパスワードを入力せずとも更新可能です。
updateメソッドをオーバーライドとかしなくても、意外と簡単に出来るのでは...と思い調べてみました。
実際にやったこと
update_without_passwordという、そのまんまな名前をしているメソッドがありました。
これを用いて今回は下記のように実装しました。
単純にパラメータに含まれるパスワードが空かどうかで、使用するメソッドを振り分けています。
# パラメータに含まれるパスワードが空の場合、
if params[:password].blank?
# パスワードなしでユーザー情報を更新
@user.update_without_password(user_params)
# パラメータにパスワードが含まれていた場合
else
@user.update(user_params)
注意点
モデルに以下のような記載があると、update_without_passwordメソッドをつかった際にエラーになります。
パスワードの入力を必須にする、という意味のバリデーションですね!
app/models/user.rb
validates :password, presence: true
onオプションでバリデーションをかけるアクションを指定しましょう。
以下のようにすれば、ユーザーを作成する際のみバリデーションがかかります。
validates :password, presence: true, on: :create
Author And Source
この問題について(意外と簡単にできた。パスワードを入力させずにユーザー情報を更新する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/ysda/items/e6536294559e9be422dc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .