Ruby / Rails

[Rails]Validations(バリデーション)の書き方

2019年9月2日

こんにちは、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でよく使用するバリデーション

Active Record バリデーション

 

・正規表現を優しく解説

サルでにもわかる正規表現入門

 

・Rubyの正規表現が正確に作成できているか確認できる

Rubular

 

・強固な正規表現を書きたい人へ

【決定版】Railsで個別の属性を検証するカスタムバリデーションを作る

 

最後に

備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。

 

 

-Ruby / Rails
-

© 2024 Nanayaku blog Powered by AFFINGER5