Sha256: 37540d4679d66318571a743c1980f27b5bb72f9b130c23c88423d40b3c0753ae
Contents?: true
Size: 1.13 KB
Versions: 2
Compression:
Stored size: 1.13 KB
Contents
require "mongoid/relations/eager/base" require "mongoid/relations/eager/belongs_to" require "mongoid/relations/eager/has_one" require "mongoid/relations/eager/has_many" require "mongoid/relations/eager/has_and_belongs_to_many" module Mongoid module Relations module Eager attr_accessor :eager_loaded def with_eager_loading(document) selecting do return nil unless document doc = Factory.from_db(klass, document, criteria.object_id) eager_load_one(doc) doc end end def eager_load_one(doc) eager_load([doc]) end def eager_loadable?(document = nil) return false if criteria.inclusions.empty? !eager_loaded end def eager_load(docs) return false unless eager_loadable? preload(criteria.inclusions, docs) self.eager_loaded = true end def preload(relations, docs) relations.group_by do |metadata| metadata.relation end.each do |relation, associations| relation.eager_load_klass.new(associations, docs).run end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mongoid-4.0.0.alpha2 | lib/mongoid/relations/eager.rb |
mongoid-4.0.0.alpha1 | lib/mongoid/relations/eager.rb |