Railsでgemを使用せずパスワードの暗号化と編集ページを作成しています。
ユーザー情報の編集ページで、パスワードが未入力であれば、パスワードは更新せずDBに登録済みのパスワードを使用したいのですが、どうやってもうまくいきません。
パスワードが未入力の場合は、before_updateをスルーできれば良いのですが、どうしても思いつきません。
何かヒントをいただけないでしょうか?
UserModel
1before_update :convert_password 2 3# パスワードを暗号化 4def convert_password 5 self.password = User.generate_password(self.password) 6end 7 8def self.generate_password(password) 9 unless self.password == current_user.password 10 # パスワードに適当な文字列を付加して暗号化する 11 salt = 'jf;adjsfueiaofhq4erhbfui2qwlhf8qwhfeuiwl' 12 Digest::MD5.hexdigest(salt + password) 13 end 14end 15 16 validates :password, presence: true, 17 length:{minimum: 8, message: 'は8文字以上で入力してください'}, 18 confirmation:true, 19 format:{with: /\A[a-zA-Z\d]+\z/, message: 'は英数字のみ使用できます'}
UsersController
1 if params[:user][:password].blank? and params[:user][:password_confirmation].blank? and params[:user][:password].length == 0 2 params[:user][:password] = current_user.password 3 params[:user][:password_confirmation] = current_user.password 4 @user.update(user_params) 5elsif params[:user][:password].length < 8 6 message = '' 7 @user.errors.full_messages.each do |m| 8 message = message + m + "<br>" 9 end 10 flash[:danger] = message 11else 12 # パスワードが入力されていたら 13 @user.update(user_params) 14end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/09/18 08:08
2019/09/18 08:51 編集
退会済みユーザー
2019/09/19 01:38