You are looking at the docs for v3.x. Check out this page on the docs for Mongoid v4.x
Validations
Mongoid includes ActiveModel::Validations
to supply the basic
validation plus an additional associated and uniqueness validator.
See ActiveModel::Validations
documentation for more information.
Mongoid behaves slightly different to Active Record when using #valid?
on already persisted data. Active Record's #valid? will run all
validations whereas Mongoid's #valid? will only run validations on
documents that are in memory as an optimization.
|
Common options that can be passed to all validations:
-
:allow_nil
Specify whether to validate on a nil attribute. -
:if
Only run if the supplied value evaluates to true. -
:on
Only run when specified, supports:create
and:update
. -
:unless
Only run if the supplied value evaluates to false.
In addition to those validations, information is provided with each macro about its specific options.
Validation | Macro | Options |
---|---|---|
Validate acceptance of terms. |
validates_acceptance_of :terms validates :terms, acceptance: true |
:message :accept # Specify the accepted value. Default: 1. |
Validate associated documents when the parent is validated. This only validates documents in memory. |
validates_associated :albums validates :albums, associated: true |
:message |
Validate confirmation of a field, with a "_confirmation" suffix. |
validates_confirmation_of :password validates :password, confirmation: true |
:message |
Validate items are not in a list. |
validates_exclusion_of :employers, in: [ "SoundCloud" ] validates :employers, exclusion: { in: [ "SoundCloud" ] } |
:in # Required list of values. :message |
Validate the format of a field. |
validates_format_of :title, with: /\A\w+\Z/ validates :title, format: { with: /\A\w+\Z/ } |
:allow_blank # Whether the field can be blank. :in # A list or range of values. :message :with # A regular expression to match. :without # A regular expression not to match. |
Validate items are included in a list. |
validates_inclusion_of :employers, in: [ "SoundCloud" ] validates :employers, inclusion: { in: [ "SoundCloud" ] } |
:allow_blank # Whether the field can be blank. :in # Required list of values. :message |
Validate the length of a field. |
validates_length_of :password, minimum: 8, maximum: 16 validates :password, length: { minimum: 8, maximum: 16 } |
:allow_blank # Whether to validate blank attributes. :in # The range the length can fall within. :maximum # The maximum length of the attribute. :message :minimum # The minimum length of the attribute. :tokenizer # A block tokenizer. :too_long # Custom message if too long. :too_short # Custom message if too short. :within # Range the length can fall within. :wrong_length # Custom message for an incorrect length. |
Validate the numericality of a field. |
validates_numericality_of :age, even: true validates :age, numericality: { even: true } |
:equal_to # A value the field must be exactly. :even # Set that the value must be even. :greater_than :greater_than_or_equal_to :less_than :less_than_or_equal_to :message :odd # Set that the value must be odd. :only_integer # Set whether the value has to be an integer. |
Validate that an attribute exists. Note that if you add a presence validation to a relation, then Mongoid will enable autosave for that relation. |
validates_presence_of :name validates :name, presence: true |
:message |
Validate that an attribute is unique. Note that for embedded documents, this will only check that the field is unique within the context of the parent document, not the entire database. |
validates_uniqueness_of :name validates :name, uniqueness: true |
:message :case_sensitive # Whether to use case sensitive matching. :scope # Scope checks to the value of this field. |