railsのバリデーションで、特定のカラムだけバリデーションを回避するにはどうすればいいでしょうか?
Userのモデルに、
・user_id
・user_name
・email
・password
・birth_date
が存在していて、ユーザー情報を更新する際に、user_name、email、birth_dateのカラムを送信すると、
パスワードが入力されていないとのバリデーションがかかります。
この更新処理はパスワードを入力しないので、パスワードのバリデーションを回避したいです。
この件にかかわらず、特定のカラムのみのバリデーションを回避するにはどうすればいいでしょうか?
具体的なソースがなくて申し訳ないですがよろしくお願いします。
ソースです。(一部省略)
ruby
1class User < ApplicationRecord 2 has_secure_password 3 4 validate :check_password 5 6 def check_password 7 if password.blank? || \ 8 password.length > 50 || \ 9 password.length < 8 || \ 10 password !~ /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,50}+\z/i 11 errors.delete(:password) 12 errors.add(:password, I18n.t("validations.password.format")) 13 end 14 end