module Mongoid::Validatable
This module provides additional validations that ActiveModel does not provide: validates_associated and validates_uniqueness_of.
Public Instance Methods
Begin the associated validation.
@example Begin validation.
document.begin_validate
@since 2.1.9
# File lib/mongoid/validatable.rb, line 31 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/validatable.rb, line 41 def exit_validate Threaded.exit_validate(self) end
Given the provided options, are we performing validations?
@example Are we performing validations?
document.performing_validations?(validate: true)
@param [ Hash ] options The options to check.
@return [ true, false ] If we are validating.
@since 4.0.0
# File lib/mongoid/validatable.rb, line 55 def performing_validations?(options = {}) options[:validate].nil? ? true : options[:validate] end
Overrides the default ActiveModel behavior since we need to handle validations of associations 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 association.
@return [ Object
] The value of the field or the association.
@since 2.0.0.rc.1
# File lib/mongoid/validatable.rb, line 71 def read_attribute_for_validation(attr) attribute = database_field_name(attr) if relations.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/validatable.rb, line 98 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/validatable.rb, line 110 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/validatable.rb, line 122 def validating_with_query? self.class.validating_with_query? end