Railsドキュメント

汎用的なバリデーション

適応バージョン

説明

汎用的なバリデーション

使い方

validates(種類, オプション引数)

# 失敗したら例外発生
validates!(種類, オプション引数)

種類

種類 説明
:acceptance チェックボックスがオンになっているか
:confirmation テキストフィールドが完全に一致するか
:exclusion 含まれていないことをバリデーション
:format 正規表現と一致するか
:inclusion 含まれていることをバリデーション
:length 長さをバリデーション
:numericality 数値のみか
:presence 空で無いこと
:absence 空であること
:uniqueness 重複していないこと

オプション

オプション 説明
:on 実行するタイミング
:if バリデーションする条件を指定
:unless バリデーションしない条件を指定
:allow_nil nilをスキップ
:allow_blank nilや空文字をスキップ
:strict 例外が発生するか
:message 失敗したときに表示するメッセージ

lengthのオプション

オプション 説明
:minimum この値より小さな値か
:maximum: この値より大きな値が
:inまたは:within 区間以内か
:is 値と等か?

numericalityのオプション

オプション 説明
:greater_than 指定した値よりも大きいか
:greater_than_or_equal_to 指定した値と等しいか、それよりも大きいか
:equal_to 指定した値と等しいか
:less_than 指定した値よりも小さいか
:less_than_or_equal_to 指定した値と等しいか、それよりも小さいか
:other_than 指定した値以外の値か
:odd 奇数か
:even 偶数か

acceptance

チェックボックスがオンになっているか
validates :form, acceptance: true
チェックボックスがオフになっているか
validates :form, acceptance: false

confirmation

テキストフィールドが完全に一致するか
validates :email, confirmation: true
テキストフィールドが完全に一致しないか
validates :email, confirmation: false

exclusion

含まれていないか
validates :subdomain, exclusion: {in: %w(www us ca jp)}

format

正規表現と一致するか
validates :legacy_code, format: {with: /\A[a-zA-Z]+\z/}

inclusion

含まれていることをバリデーション
validates :size, inclusion: {in: %w(small medium large)}

length

長さをバリデーション
validates :name, length: {minimum: 2}

numericality

数値のみか
validates :points, numericality: true

presence

空で無いこと
validates :name, :login, :email, presence: true

absence

空であること
validates :name, :login, :email, absence: true

uniqueness

重複していないこと
validates :email, uniqueness: true

ソースコード