こんにちは、Nanayakuです。
今回はrailsのValidationsの書き方について紹介します。
目次
validationsとは
validationsとは、画像のようなユーザー登録などの入力フォームで、想定しているデータ以外のデータをブロックするトラップのようなものです。
なぜ、ブロックする必要があるかと言うと、デフォルトの状態では空欄でも登録する事ができるからです。
また、上の画像の入力フォームでvalidationsをつけていないと、name・email・passwordが同じユーザーが出来てしまいます。
これでは、個人情報の漏えいやアカウントの乗っ取りなどの問題が続出してしまします。
これらを防ぎため、validationsを設定してセキュリティを強化する必要があるのです。
書き方
validationsは、modelsディレクトリに書きます。
validationsの書き方は、下記の通りで、画像の下線のnameに対してvalidationsを設定しています。
validates バリデーションを付けたいカラム名 , バリデーションヘルパー
validates :name, presence: true
バリデーションヘルパーの「presence: true」は、入力フォームが空欄(データが存在しない)か判断しています。
バリデーションヘルパーの種類
よく使用されるバリデーションヘルパーを紹介します。
空欄を止める
presence: true
DBにすでに存在しているデータを止める(emailなどユーザーを判断するデータに使用)
uniqueness: true
文字数制限(8文字以上)
length: { minimum: 8 }
文字数制限(15文字以下)
length: { maximum: 15 }
文字数制限(8文字以上15文字以下)
length: { in: 8..15 }
文字数制限(8文字のみ)
length: { is: 8 }
文字制限(emailの設定で「@」と「.」を必ず使用する)
format: {with: /[A-Za-z0-9._+]+@[A-Za-z]+.[A-Za-z]/}
文字制限を設定する場合、正規表現で設定します
まとめ
validationsを設定することで、セキュリティを強化する事ができます。
modelsディレクトリで
「validates バリデーションを付けたいカラム名 , バリデーションヘルパー」
で、validationsを設定できます。
参考サイト
・rails側が用意したrailsでよく使用するバリデーション
・正規表現を優しく解説
・Rubyの正規表現が正確に作成できているか確認できる
・強固な正規表現を書きたい人へ
【決定版】Railsで個別の属性を検証するカスタムバリデーションを作る
最後に
備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。