Rails5で更新時または新規作成時のみValidationをかける方法


スポンサーリンク

普通、ユーザー登録後にユーザー情報を変更するための画面を作ると思います。登録時は当然パスワードを設定してもらうわけですが、ユーザー情報変更画面にパスワード変更欄を作成し、そこに新しいパスワードが入力された場合のみ8文字以上かどうか確認、空の場合は変更しないという仕組みを作りたいことがあります。この場合は以下のように設定できます。

ここではモデル名をUserとします。

Userモデルのファイルのclassの中に、

def validate_on_create
    validates :password, presence: true, length: { minimum: 8 }
end

def validate_on_update
    validates :password, presence: true, length: { minimum: 8 }, if: :update_password?
end

def update_password?
    password.to_s != ''
end

と記述します。

とりあえず自分の環境ではこれで動いていますので、お試しください。
何かヘンなところなどを発見されましたら、コメントよろしくお願いします。

ご覧いただきありがとうございました。

last

フォローする