Module: Mongoid::Validations

Extended by:
ActiveSupport::Concern
Includes:
ActiveModel::Validations
Included in:
Components
Defined in:
lib/mongoid/validations.rb,
lib/mongoid/validations/format.rb,
lib/mongoid/validations/length.rb,
lib/mongoid/validations/presence.rb,
lib/mongoid/validations/associated.rb,
lib/mongoid/validations/uniqueness.rb,
lib/mongoid/validations/localizable.rb

Overview

This module provides additional validations that ActiveModel does not provide: validates_associated and validates_uniqueness_of.

Defined Under Namespace

Modules: ClassMethods, Localizable Classes: AssociatedValidator, FormatValidator, LengthValidator, PresenceValidator, UniquenessValidator

Instance Method Summary collapse

Instance Method Details

#begin_validateObject

Begin the associated validation.

Examples:

Begin validation.

document.begin_validate

Since:

  • 2.1.9



23
24
25
# File 'lib/mongoid/validations.rb', line 23

def begin_validate
  Threaded.begin_validate(self)
end

#exit_validateObject

Exit the associated validation.

Examples:

Exit validation.

document.exit_validate

Since:

  • 2.1.9



33
34
35
# File 'lib/mongoid/validations.rb', line 33

def exit_validate
  Threaded.exit_validate(self)
end

#read_attribute_for_validation(attr) ⇒ Object

Overrides the default ActiveModel behaviour since we need to handle validations of relations slightly different than just calling the getter.

Examples:

Read the value.

person.read_attribute_for_validation(:addresses)

Parameters:

  • attr (Symbol)

    The name of the field or relation.

Returns:

  • (Object)

    The value of the field or the relation.

Since:

  • 2.0.0.rc.1



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/mongoid/validations.rb', line 49

def read_attribute_for_validation(attr)
  attribute = attr.to_s
  if relations.has_key?(attribute)
    begin_validate
    relation = send(attr)
    exit_validate
    relation.do_or_do_not(:in_memory) || relation
  elsif fields[attribute].try(:localized?)
    attributes[attribute]
  else
    send(attr)
  end
end

#valid?(context = nil) ⇒ true, false

Determine if the document is valid.

Examples:

Is the document valid?

person.valid?

Is the document valid in a context?

person.valid?(:create)

Parameters:

  • context (Symbol) (defaults to: nil)

    The optional validation context.

Returns:

  • (true, false)

    True if valid, false if not.

Since:

  • 2.0.0.rc.6



76
77
78
# File 'lib/mongoid/validations.rb', line 76

def valid?(context = nil)
  super context ? context : (new_record? ? :create : :update)
end

#validated?true, false

Used to prevent infinite loops in associated validations.

Examples:

Is the document validated?

document.validated?

Returns:

  • (true, false)

    Has the document already been validated?

Since:

  • 2.0.0.rc.2



88
89
90
# File 'lib/mongoid/validations.rb', line 88

def validated?
  Threaded.validated?(self)
end