バリデーションの種類


こんにちは!
今回の記事はバリデーションについて
あれこれアウトプットしていこうと思います!
僕の理解した範囲のバリデーションについて
記述していこうと思います!

バリデーションとは?

バリデーションとはデータを登録する際に
一定の制約をかけることを言います。
*新規登録ユーザー名が空のデータで登録されるのを防ぐ。
*新規パスワード登録の際に最低6文字以上は入力を強制させる。
といった例が挙げられます。

バリデーションを設定する際はvalidatesメソッドを使用します。
記述方法は以下のとおりです。

validates :カラムの種類, バリデーションの種類

validates :name, presence: true 

基本的にデータの登録などテーブルとの
やり取りに関する情報は
モデルを使用します。
コントローラーはモデルの機能を利用して処理を
呼ぶだけの簡単な処理を記述します。

バリデーションの種類

validates :name, presence: true 

presence: tureは名前が空欄だとデータの登録ができない
というバリデーションです。空欄のまま登録を試みるとエラーが起こります。

validates :name, absence: true

absence: trueはpresence: trueの逆で
名前が空欄であるというバリデーションです。

validates :name, acceptance: true,

acceptance: trueはモデルにチェックボックスをチェックしたかを
確認させるバリデーションです。
利用規約の同意などでこの記述が用いられます。

validates :name, presence: true length: { maximum: 6 }

lengthを指定することで指定した属性の文字数制限をチェックすることができます。
length: { maximum: 6 }の通り、6文字以内の文字制限があるため、
7文字以上記述しようとするとエラーが発生します。

validates :name, presence: true length: { minimum: 6 }

逆にこちらは7文字以上は記述しなければいけません。

validates :email, uniqueness: true

emailは一意となるようにRails側でバリデーションをかけることができます。

バリデーションの共通オプション

validates :name, presence: true on: :create

onオプションはバリデーション実行のタイミングを設定できます。
on: :createを指定することでレコードに新規作成時に
バリデーションが行われます。

validates :name, length: { maximum: 6 }, allow_blank: true

allow_blank: trueは値が空の場合にバリデーションを実行します。
この記述で、値が空の場合と7文字以内でデータを登録しようとすると
エラーを返されます。

validates :email, format: { with: /\A[a-zA-Z]+\z/,
    message: "英文字のみが使用できます" }

messageオプションを使用するとバリデーション失敗時にエラ〜メッセージを
表示することができます。
また、formatはwithオプションを指定した正規表現と一致するかどうかを調べます。