Module ActiveRecord::AssociationPreload::ClassMethods
In: vendor/rails/activerecord/lib/active_record/association_preload.rb

Methods

Protected Instance methods

Loads the named associations for the activerecord record (or records) given preload_options is passed only one level deep: don‘t pass to the child associations when associations is a Hash

[Source]

    # File vendor/rails/activerecord/lib/active_record/association_preload.rb, line 12
12:       def preload_associations(records, associations, preload_options={})
13:         records = [records].flatten.compact.uniq
14:         return if records.empty?
15:         case associations
16:         when Array then associations.each {|association| preload_associations(records, association, preload_options)}
17:         when Symbol, String then preload_one_association(records, associations.to_sym, preload_options)
18:         when Hash then
19:           associations.each do |parent, child|
20:             raise "parent must be an association name" unless parent.is_a?(String) || parent.is_a?(Symbol)
21:             preload_associations(records, parent, preload_options)
22:             reflection = reflections[parent]
23:             parents = records.map {|record| record.send(reflection.name)}.flatten
24:             unless parents.empty? || parents.first.nil?
25:               parents.first.class.preload_associations(parents, child)
26:             end
27:           end
28:         end
29:       end

[Validate]