Sha256: f800d8da3f0e5343e05b2555475217f31ad2fb4e6a57db5e9426419a31ca2dd4

Contents?: true

Size: 826 Bytes

Versions: 27

Compression:

Stored size: 826 Bytes

Contents

# frozen_string_literal: true
# encoding: utf-8

require "mongoid/association/referenced/eager"

module Mongoid
  module Association

    # This module defines the eager loading behavior for criteria.
    #
    # @since 7.0
    module EagerLoadable

      def eager_loadable?
        !criteria.inclusions.empty?
      end

      def eager_load(docs)
        docs.tap do |d|
          if eager_loadable?
            preload(criteria.inclusions, d)
          end
        end
      end

      def preload(relations, docs)
        relations.group_by(&:inverse_class_name)
            .values
            .each do |associations|
          associations.group_by(&:relation)
              .each do |relation, association|
            relation.eager_loader(association, docs).run
          end
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
mongoid-7.3.5 lib/mongoid/association/eager_loadable.rb
mongoid-7.3.4 lib/mongoid/association/eager_loadable.rb
mongoid-7.1.11 lib/mongoid/association/eager_loadable.rb
mongoid-7.2.6 lib/mongoid/association/eager_loadable.rb
mongoid-7.3.3 lib/mongoid/association/eager_loadable.rb
mongoid-7.3.2 lib/mongoid/association/eager_loadable.rb
mongoid-7.2.5 lib/mongoid/association/eager_loadable.rb
mongoid-7.1.10 lib/mongoid/association/eager_loadable.rb
mongoid-7.1.9 lib/mongoid/association/eager_loadable.rb
mongoid-7.2.4 lib/mongoid/association/eager_loadable.rb
mongoid-7.3.1 lib/mongoid/association/eager_loadable.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/mongoid-7.1.7/lib/mongoid/association/eager_loadable.rb
mongoid-7.3.0 lib/mongoid/association/eager_loadable.rb
mongoid-7.2.3 lib/mongoid/association/eager_loadable.rb
mongoid-7.1.8 lib/mongoid/association/eager_loadable.rb
mongoid-7.2.2 lib/mongoid/association/eager_loadable.rb
mongoid-7.2.1 lib/mongoid/association/eager_loadable.rb
mongoid-7.1.7 lib/mongoid/association/eager_loadable.rb
mongoid-7.2.0 lib/mongoid/association/eager_loadable.rb
mongoid-7.1.6 lib/mongoid/association/eager_loadable.rb