kouの技術的メモ

学習した内容の定着やアウトプット用に開設しました

成果物の作成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があれば事足りるんじゃないか。

情報を調べても出てこなかったので実験してみたのですが、

どうもこれがないとパスワードフォームに"  "のような空文字を入力された場合バリデーションを通り抜けてしまうので、必要なようです。

すごく喉に引っかかる感がある部分だったので超すっきり。