Railsで避けては通れないバリデーション。
くるみ
- バリデーションで指定できる検証にどんなものがあるの?
- 複数ある検証クラスについて難しいことはいいから簡潔に知りたい
とういう方に向けて「Railsのバリデーションで指定できる検証クラス」をまとめました。
初学者の備忘録ゆえに至らない点もあると思いますが参考になれば幸いです⸝⸝- ̫ -⸝⸝
お品書き
Railsのバリデーションまとめ
length
validates :example,
length: {minimum: 810, maximum: 114514}
lengthは文字列の長さをチェックしてくれます。
指定できるパラメーターは以下にまとめました。
lengthのパラメーター
パラメーター | 内容 |
minimum | 文字列の長さの最小 |
maximum | 文字列の長さの最長 |
in | 文字列の長さの範囲 |
tokenizer | 文字列の分割方法 |
is | 文字列の長さ(ピッタリ) |
too_long | maximumをオーバーした時のエラーメッセージ |
too_short | minimumを下回った時のエラーメッセージ |
wrong_length | isを満たさなかった時のエラーメッセージ |
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_nill | nillの場合、他の検証をスキップ |
allow_blank | nillもしくは空の場合に他の検証をスキップ |
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は登録/更新どちらの際にその検証を行うか設定できるパラメーターです。
上の例でいうと一意の検証は登録時のみに、長さの検証は更新時のみにするように設定しています。
くるみ
message
validates :example,
uniqueness: {message: "%{value}は既に使われています。"},
length: {minimum: 810, message: "%{count}はイキスギィ!"}
messageはその名の通りエラーメッセージを設定できるパラメーターです。
「%{value}」には入力された値、「%{count}」には数値の検証パラメータが入ります。
ブログ主
まとめ
以上、Railsのバリデーションで指定できる検証クラスまとめでした。
参考になれば幸いです!では⸝⸝- ̫ -⸝⸝
参考 Active Record バリデーションRailsガイド