ユーザープロフィールupdate時に起きたエラー

# プロフィールページでニックネーム、自己紹介文の編集機能をつける

<img width="724" alt="スクリーンショット 2019-07-12 19.00.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442488/d1c9014e-960e-7626-e549-4c93d34943e6.png">


```phpruby:routes.rb

  resources :users, only: [:show, :new, :edit, :create, :destroy, :update]
```

```phpruby:users_contoroller
  def update
    @user = User.find(params[:id])
    if @user.update(user_params)
      flash[:notice] = "変更しました。"
      redirect_to "/users/#{@user.id}/edit"
    else 
      flash[:alert] = "失敗しました"
      redirect_to "/users/#{@user.id}/edit"
    end
  end

  private
  def user_params
    params.require(:user).permit(:nickname,:introduce)
  end

```

```phpruby:edit.html.haml
.wrapper1.clearfix
  = render 'mypage/mypage-sidemenu'
  .profile-container
    %h2.container__profile プロフィール
    = form_for @user, url:"/users/#{@user.id}" , method: :patch, html:{class: "edit_form"} do |f|
      .container__name
        = image_tag "https://static.mercdn.net/images/member_photo_noimage_thumb.png", class: "image-tag"
        = f.text_field :nickname, value: "#{@user.nickname}" ,class: "edit_name"
      .container__text
        = f.text_area :introduce, value: "#{@user.introduce}",class: "introduce", placeholder: "例）こんにちは☆ ご覧いただきありがとうございます！かわいいものやきれいめオフィスカジュアル中心に出品しています。服のサイズは主に9号です。気持ちよくお取引できるよう心がけていますので、商品や発送方法などご質問がありましたらお気軽にどうぞ♪"
        .container__bottun
          = f.submit "変更する", class: 'change-profile-form__action-btn'

```
form_withだとなぜかエラーになったので、form_forにしている。

上記のようにしたが、更新ができない。。
controllerにbinding.pryを挟み、@user.valid?→@user.errors.full_messagesをしたところ、パスワードが求められる。（コンソール上でcurrent_userでログイン状態であることは確認済）

<img width="1229" alt="スクリーンショット 2019-07-12 19.07.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442488/02b532c7-8abb-d989-149f-392fb196dd39.png">


#他のページ（ユーザー新規登録）でかけているvalidationが効いてしまっていた。


```phpruby:user.rb
  # バリデーション
  VALID_EMAIL_REGEX =                 /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  VALID_PHONE_REGEX =                 /\A\d{10}$|^\d{11}\z/
  VALID_ADDRESS_NUMBER_REGEX =        /\A[0-9]{3}-[0-9]{4}\z/
  validates :nickname,                presence: true, length: {maximum: 20}
  validates :email,                   presence: true, uniqueness: true, format: { with: VALID_EMAIL_REGEX }
  validates :password,                presence: true, length: {minimum: 6, maximum: 128},on: :save_to_session_before_phone
  validates :password_confirmation,   presence: true, length: {minimum: 6, maximum: 128},on: :save_to_session_before_phone
  validates :password,                length: {minimum: 6, maximum: 128},on: :update,allow_blank: true
  validates :password_confirmation,   length: {minimum: 6, maximum: 128},on: :update,allow_blank: true
  validates :last_name,               presence: true
  validates :first_name,              presence: true
  validates :last_name_kana,          presence: true
  validates :first_name_kana,         presence: true
  validates :birthdate_year,          numericality: true
  validates :birthdate_month,         numericality: true
  validates :birthdate_day,           numericality: true
  validates :phone_number,            presence: true, uniqueness: true, format: { with: VALID_PHONE_REGEX }
  validates :address_last_name,       presence: true
  validates :address_first_name,      presence: true
  validates :address_last_name_kana,  presence: true
  validates :address_first_name_kana, presence: true
  validates :address_number,          presence: true, format: { with: VALID_ADDRESS_NUMBER_REGEX }
  validates :address_prefecture,      presence: true
  validates :address_name,            presence: true
  validates :address_block,           presence: true
  validates :address_phone_number,    allow_blank: true, format: { with: VALID_PHONE_REGEX }
end
```

**下記変更点。**

```phpruby:user.rb
validates :password,                presence: true, length: {minimum: 6, maximum: 128},on: :save_to_session_before_phone
  validates :password_confirmation,   presence: true, length: {minimum: 6, maximum: 128},on: :save_to_session_before_phone
  validates :password,                length: {minimum: 6, maximum: 128},on: :update,allow_blank: true
  validates :password_confirmation,   length: {minimum: 6, maximum: 128},on: :update,allow_blank: true
```
validationを増やし、on:アクション名で当該validationを使用するシーンを指定。
編集ページではallow_blankとすることで、空欄（未入力）で先に進めるようにしたら編集ができるようになった。