成果物の作成6 登録ユーザー情報の更新、一覧画面、情報の破棄部分の実装
railsチュートリアル10章で今まで良くわからなかった部分があるのですが、 新しいアプリ作成を通して分るようになりました。
ユーザー情報の更新で
has_secure_password validates :password, presence: true, length: { minimum: 6 }, allow_nil: true
パスワードカラムに対してのバリデーションでallow_nil:trueを加えることで更新時、パスワードフォームが未入力でもOKになります。
また、has_secure_passwordにより、新規オブジェクトの生成時は空をチェックする機能があるので、
ユーザー新規作成時はパスワードフォーム未入力だときちんとエラーが出ます。
じゃあなぜpsesence:trueはバリデーションに入れてあるのか。has_secure_passwordがあれば事足りるんじゃないか。
情報を調べても出てこなかったので実験してみたのですが、
どうもこれがないとパスワードフォームに" "のような空文字を入力された場合バリデーションを通り抜けてしまうので、必要なようです。
すごく喉に引っかかる感がある部分だったので超すっきり。