vendor/rails/activerecord/lib/active_record/validations.rb
# Validates whether the associated object or objects are all valid themselves. Works with any kind of association.
#
#   class Book < ActiveRecord::Base
#     has_many :pages
#     belongs_to :library
#
#     validates_associated :pages, :library
#   end
#
# Warning: If, after the above definition, you then wrote:
#
#   class Page < ActiveRecord::Base
#     belongs_to :book
#
#     validates_associated :book
#   end
#
# this would specify a circular dependency and cause infinite recursion.
#
# NOTE: This validation will not fail if the association hasn't been assigned. If you want to ensure that the association
# is both present and guaranteed to be valid, you also need to use +validates_presence_of+.
#
# Configuration options:
# * <tt>:message</tt> - A custom error message (default is: "is invalid")
# * <tt>:on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
# * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
#   occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>).  The
#   method, proc or string should return or evaluate to a true or false value.
# * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
#   not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>).  The
#   method, proc or string should return or evaluate to a true or false value.
Validates whether the associated object or objects are all valid themselves. Works with any kind of association.

validates_associated :pages, :library
end

If, after the above definition, you then wrote.





this would specify a circular dependency and cause infinite recursion.

This validation will not fail if the association hasn't been assigned. If you want to ensure that the association
is both present and guaranteed to be valid, you also need to use +validates_presence_of+.


Validates whether the associated object or objects are all valid themselves . Works with any kind of association . validates_associated : pages : library end If after the above definition you then wrote . this would specify a circular dependency and cause infinite recursion . This validation will not fail if the association hasn ' t been assigned . If you want to ensure that the association is both present and guaranteed to be valid you also need to use + validates_presence_of + .
def validates_associated(*attr_names)
        configuration = { :on => :save }
        configuration.update(attr_names.extract_options!)
        validates_each(attr_names, configuration) do |record, attr_name, value|
          unless (value.is_a?(Array) ? value : [value]).inject(true) { |v, r| (r.nil? || r.valid?) && v }
            record.errors.add(attr_name, :invalid, :default => configuration[:message], :value => value)
          end
        end
      end
def validates_associated ( * attr_names ) configuration = { :on => :save } configuration . update ( attr_names . extract_options! ) validates_each ( attr_names , configuration ) do | record , attr_name , value | unless ( value . is_a? ( Array ) ? value : [ value ] ) . inject ( true ) { | v , r | ( r . nil? || r . valid? ) && v } record . errors . add ( attr_name , :invalid , :default => configuration [ :message ] , :value => value ) end end end
Validates whether the associated object or objects are all valid themselves.
Validates whether the associated object or objects are all valid themselves .
attr_names