...

【Rails】バリデーションで指定できる検証クラスまとめ

Railsのバリデーションで指定できる検証クラスまとめ

どうもおはようポテト(@ohayoupoteto22)です。

Railsで避けては通れないバリデーション。

バリデーションで指定できるのって色々あって大変…

ということで今回は

バリデーションで指定できる検証にどんなものがあるのか知りたい

複数ある検証クラスについて難しいことはいいから簡潔に知りたい

とういう方に向けて「Railsのバリデーションで指定できる検証クラス」をまとめました。

初学者の備忘録ゆえに至らない点もあると思いますが参考になれば幸いです⸝⸝- ̫ -⸝⸝

ブログ主

早速いってみよう!

 

【Rails】バリデーションの検証クラスまとめ

length

validates :example,
  length: {minimum: 810, maximum: 114514}

lengthは文字列の長さをチェックしてくれます。

指定できるパラメーターは以下にまとめました。

lengthのパラメーター

パラメーター内容
minimum文字列の長さの最小
maximum文字列の長さの最長
in文字列の長さの範囲
tokenizer文字列の分割方法
is文字列の長さ(ピッタリ)
too_longmaximumをオーバーした時のエラーメッセージ
too_shortminimumを下回った時のエラーメッセージ
wrong_lengthisを満たさなかった時のエラーメッセージ

 

numericality

validates :example,
  numericality: { only_integer: true, greater_than: 810}

numericalityは数値について色々チェックしてくれます。

指定できるパラメーターは以下にまとめました。

numericalityのパラメーター

パラメーター内容
only_integer整数かどうか
greater_than指定した値より大きいか
greater_than_or_equal_to指定した値以上か
equal_to指定した値と等しいか
less_than指定した値未満か
less_than_or_equal_to指定した値以下か
odd奇数か
even偶数か

 

 

format

validates :example,
  format: {with : /Aオフ会[0-9]+人z/}

formatは正規表現パターンとマッチするかチェックしてくれます。

その際にパラメーターとしてwithを使います。

 

uniqueness

validates :example,
  uniquness: true

uniquenessは値が重複していないかチェックしてくれます。

指定できるパラメータは以下にまとめました。

uniquenessのパラメーター

パラメーター内容
scope“一意”の範囲を決める
case_sensitive大文字か小文字か区別する

 

validates :example1,
  uniqueness: {scope: [:example2, :example3]}

scopeというパラメーターでは、「どの列も含め一意にするか」を設定できます。

上の例だとexample1〜3の三つのカラムの中で一件しか登録できないようになります。

 

presence

validates :example,
  presence: true

presenceは値が空ではないかチェックしてくれます。

 

absence

validates :example,
  absence: true

absenceは値が空かチェックしてくれます。

こっちはわざと空にしたい時だね

ソロモン

 

acceptance

validates :example,
  acceptance: true

acceptanceはチェックボックスにチェックが入ってるかどうか検証してくれます。

パラメーターとしてチェック時の値を表すacceptが指定できます。

 

confirmation

validates :example,
  confirmation: true

confirmationは重要な項目を確認のために2回入力させる場合に、それらが等しいかチェックしてくれます。

ブログ主

例えばメアドとかパスワードとかだね

 

inclusion

validates :example,
inculseion: {in: ["syamu_game","大物youtube r","貝塚土竜"]}

inclusionは指定したオブジェクトに含まれている値かチェックしてくれます。

その際にパラーメーターとしてinを使います。

 

exclusion

validates :example,
exclusion: {in: ["syamu_game","大物youtube r","貝塚土竜"]}

exclusionは指定したオブジェクトに含まれていない値かチェックしてくれます。

その際にパラメーターとしてinを使います。

検証クラスは一通り見たから次は共通のパラメーターを見ていこう!

ソロモン

 

各検証クラス共通のパラメーター

上で挙げた検証クラス全てで共通で使えるパラメータがあります。

まとめるとこんな感じ。

allow_nillnillの場合、他の検証をスキップ
allow_blanknillもしくは空の場合に他の検証をスキップ
if条件を満たす時のみ検証する
unless条件を満たさない時のみ検証する
messageエラーメッセージの修正
on検証のタイミングを設定する

ブログ主

一つ一つ見ていこう!

 

allow_nill / allow_blank

validates :example,
  uniqueness: {allow_blank: true},
  length: {minimum: 810, allow_nill: true}

allow_nill(allow_blank)はそのレコードがnill(nillか空)であった場合にその項目の検証をスキップしてくれるパラメーターです。

上の例でいうとexampleというカラムは、nillか空の場合一意かどうかの検証(uniqueness)はスキップされ、nillの場合長さの検証(length)はスキップされる…ってな具合です。

 

if / unless

validates :example,
  uniqueness: {unless: "example2.blank?"},
  length: {minimum: 810, if: "!example2.blank?"}

if(unless)は特定の条件下でのみその項目の検証を行うパラメーターです。

上の例でいうとexample2というカラムのレコードが空でなければ一意かどうかと長さの検証をする…ということですね。

 

on

validates :example,
  uniqueness: {on: create},
  length: {minimum: 810, on: update}

onは登録/更新どちらの際にその検証を行うか設定できるパラメーターです。

上の例でいうと一意の検証は登録時のみに、長さの検証は更新時のみにするように設定しています。

デフォルトだとどちらでも行う「save」って値だよ

ソロモン

 

message

validates :example,
  uniqueness: {message: "%{value}は既に使われています。"},
  length: {minimum: 810, message: "%{count}はイキスギィ!"}

messageはその名の通りエラーメッセージを設定できるパラメーターです。

「%{value}」には入力された値、「%{count}」には数値の検証パラメータが入ります。

ブログ主

「%{count}」は数値系の検証の時だけに使えると…

 

最後に:バリデーションは奥が深いね(小並感)

以上となります。

参考になれば幸いです!では⸝⸝- ̫ -⸝⸝

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA