babie steps

作業療法記録

Rails3 対応 MongoDB ORM、Mongoid 詳解―バリデーション

Mongoid は、基本的なバリデーションを提供するために ActiveModel::Validations を含んでおり、さらに関連と一意性バリデーションに手を加えています。

さらに詳しい情報は、ActiveModel::Validations のドキュメントを参照してください。


全てのバリデーションには以下の共通のオプションがあります。

  • :allow_nil アトリビュートが nil を許すかどうかを指定します。
  • :if 与えられた値が true と評価された場合だけ実行されます。
  • :on 指定された :create や :update の時だけ実行されます。
  • :unless 与えられた値が false と評価された場合だけ実行されます。

ブール値のフィールドが受け入れ可能(デフォルト: true)かどうかを検証します:

validates_acceptance_of :terms

オプション:

  • :accept 受け入れる値を指定します。
  • :message カスタムエラーメッセージを定義します。

関連付けられているドキュメントも一緒に検証します:

validates_associated :addresses, :employers

オプション:

  • :message カスタムエラーメッセージを定義します。

末尾に "_confirmation" がついたアクセサと一致するかを検証します:

validates_confirmation_of :password

オプション:

  • :message カスタムエラーメッセージを定義します。

与えられた値が含まれないかを検証します:

validates_exclusion_of :employers, :in => ["Hashrocket"]

オプション:

  • :in 含まれない配列か範囲。
  • :message カスタムエラーメッセージを定義します。

フィールドのフォーマットを検証します:

validates_format_of :title, :with => /[A-Za-z]/

オプション:

  • :in 含まれる配列か範囲。
  • :allow_blank 空の値を許すかどうか指定します。
  • :with マッチする正規表現
  • :without マッチしない正規表現
  • :message カスタムエラーメッセージを定義します。

与えられた値が含まれるかを検証します。

validates_inclusion_of :employers, :in => ["Hashrocket"]

オプション:

  • :allow_blank 空の値を許すかどうか指定します。
  • :in 含まれる配列か範囲。
  • :message カスタムエラーメッセージを定義します。

フィールドの長さを検証します:

validates_length_of :password, :minimum => 8, :maximum => 16

オプション:

  • :allow_blank 空の値を許すかどうか指定します。
  • :in 長さの範囲を指定します。
  • :within 長さの範囲を指定します。
  • :maximum アトリビュートの最大の長さを指定します。
  • :minimum アトリビュートの最小の長さを指定します。
  • :tokenizer ブロックで文字のカウント方法を定義します。
  • :message カスタムエラーメッセージを定義します。
  • :too_long 長すぎた時のカスタムエラーメッセージを定義します。
  • :too_short 短すぎた時のカスタムエラーメッセージを定義します。
  • :wrong_length 間違った長さの時のカスタムエラーメッセージを定義します。

フィールドの数値を検証します:

validates_numericality_of :age, :even => true

オプション:

  • :equal_to フィールドが指定した値と一致するか検証します。Specify a value the field must be exactly.
  • :greater_than フィールドが指定した値より大きいか検証します。
  • :greater_than_or_equal_to フィールドが指定した値より大きいか等しいかを検証します。
  • :less_than フィールドが指定した値より小さいか検証します。
  • :less_than_or_equal_to フィールドが指定した値より小さいか等しいかを検証します。
  • :even 偶数かどうかを指定します。
  • :odd 奇数かどうかを指定します。
  • :only_integer 整数かどうかを指定します。
  • :message カスタムエラーメッセージを定義します。

フィールドが存在するかを懸賞します:

validates_presence_of :first_name

オプション:

  • :message カスタムエラーメッセージを定義します。

フィールドがデータベースで一意かどうかを検証します:

※注意:エンベッドされたドキュメントに使用した場合、親ドキュメントのコンテキストの範囲内で一意かどうかをチェックします。データベース全体ではありません。

validates_uniqueness_of :ssn

オプション:

  • :message カスタムエラーメッセージを定義します。


バリデーションは以上です。