This module provides additional validations that ActiveModel does not provide: validates_associated and validates_uniqueness_of.
Begin the associated validation.
@example Begin validation.
document.begin_validate
@since 2.1.9
# File lib/mongoid/validations.rb, line 29 def begin_validate Threaded.begin_validate(self) end
Exit the associated validation.
@example Exit validation.
document.exit_validate
@since 2.1.9
# File lib/mongoid/validations.rb, line 39 def exit_validate Threaded.exit_validate(self) end
Overrides the default ActiveModel behaviour since we need to handle validations of relations slightly different than just calling the getter.
@example Read the value.
person.read_attribute_for_validation(:addresses)
@param [ Symbol ] attr The name of the field or relation.
@return [ Object ] The value of the field or the relation.
@since 2.0.0.rc.1
# File lib/mongoid/validations.rb, line 55 def read_attribute_for_validation(attr) attribute = attr.to_s if relations.has_key?(attribute) begin_validate relation = without_autobuild { send(attr) } exit_validate relation.do_or_do_not(:in_memory) || relation elsif fields[attribute].try(:localized?) attributes[attribute] else send(attr) end end
Determine if the document is valid.
@example Is the document valid?
person.valid?
@example Is the document valid in a context?
person.valid?(:create)
@param [ Symbol ] context The optional validation context.
@return [ true, false ] True if valid, false if not.
@since 2.0.0.rc.6
# File lib/mongoid/validations.rb, line 82 def valid?(context = nil) super context ? context : (new_record? ? :create : :update) end
Used to prevent infinite loops in associated validations.
@example Is the document validated?
document.validated?
@return [ true, false ] Has the document already been validated?
@since 2.0.0.rc.2
# File lib/mongoid/validations.rb, line 94 def validated? Threaded.validated?(self) end
Are we currently performing a validation that has a query?
@example Are we validating with a query?
document.validating_with_query?
@return [ true, false ] If we are validating with a query.
@since 3.0.2
# File lib/mongoid/validations.rb, line 106 def validating_with_query? self.class.validating_with_query? end