Class: Mongoid::Validations::AssociatedValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/mongoid/validations/associated.rb

Overview

Validates whether or not an association is valid or not. Will correctly handle has one and has many associations.

Examples:

Set up the association validations.


class Person
  include Mongoid::Document
  embeds_one :name
  embeds_many :addresses

  validates_associated :name, :addresses
end

Instance Method Summary collapse

Instance Method Details

#validate_each(document, attribute, value) ⇒ Object

Validates that the associations provided are either all nil or all valid. If neither is true then the appropriate errors will be added to the parent document.

Examples:

Validate the association.

validator.validate_each(document, :name, name)

Parameters:

  • document (Document)

    The document to validate.

  • attribute (Symbol)

    The relation to validate.

  • value (Object)

    The value of the relation.



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/mongoid/validations/associated.rb', line 29

def validate_each(document, attribute, value)
  document.validated = true
  valid = Array.wrap(value).collect do |doc|
    if doc.nil?
      true
    else
      doc.validated? ? true : doc.valid?
    end
  end.all?
  document.validated = false
  return if valid
  document.errors.add(attribute, :invalid, options.merge(:value => value))
end