スポンサーリンク
普通、ユーザー登録後にユーザー情報を変更するための画面を作ると思います。登録時は当然パスワードを設定してもらうわけですが、ユーザー情報変更画面にパスワード変更欄を作成し、そこに新しいパスワードが入力された場合のみ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
と記述します。
とりあえず自分の環境ではこれで動いていますので、お試しください。
何かヘンなところなどを発見されましたら、コメントよろしくお願いします。
ご覧いただきありがとうございました。