前提・実現したいこと
railsでsnsサイトを作っています。
プロフィール画像の更新の際に疑問点があったので、ご教授ください。
発生している問題・エラーメッセージ
プロフィール画像の更新をする際、images controllerにて、strong parametersを用い、
userモデルのimage_userを更新します。
その際に、strong parametersにてpasswordを受け取っていないのに、下記エラーメッセージがでます。
エラーに従い、userモデルにてpasswordにallow_nilを記載することでエラーは解消されたのですが、
なぜ、passwordに対して、validationがかけられたのかご教授願います。
*** ActiveRecord::RecordInvalid Exception: Validation failed: Password can't be blank, Password is too short (minimum is 8 characters)
該当のソースコード
imagesController
1class ImagesController < ApplicationController 2 before_action :logged_in_user, only: :update_user 3 before_action :correct_user, only: :update_user 4 5 def edit_user 6 @user = User.find(params[:id]) 7 end 8 9 def update_user 10 @user = User.find(params[:id]) 11 debugger 12 if @user.update(user_params) 13 flash[:success] = "画像を更新しました" 14 redirect_to user_path(@user) 15 else 16 flash[:danger] = "画像を更新できませんでした" 17 render 'users/show' 18 end 19 end 20 21 private 22 23 def user_params 24 params.require(:image).permit(:image_user) 25 end 26 27end 28
userModel
1class User < ApplicationRecord 2 has_many :microposts 3 4 validates :name, presence: true, length:{maximum:10} 5 validates :email, presence: true, uniqueness: true 6 7 has_secure_password 8 validates :password, presence: true, length:{minimum:8}, allow_nil: true 9 validates :introduction, length:{maximum:160} 10 11 mount_uploader :image_user, UserImageUploader 12 13 #パスワードのハッシュ化 14 def User.digest(password) 15 BCrypt::Password.create(password) 16 end 17 18end 19
試したこと
user.rbにて、has_secure_passwordをコメントアウトし、passwordをpassword_diestに変更すると、エラーがでなくなりました。てことは、passwordという仮想的な物に対する仕様なのかなぁとか思ってます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/14 03:29