module Sequel::Plugins::TacticalEagerLoading::InstanceMethods

Attributes

retrieved_by[RW]

The dataset that retrieved this object, set if the object was reteived via Dataset#all.

retrieved_with[RW]

All model objects retrieved with this object, set if the object was reteived via Dataset#all.

Public Instance Methods

marshallable!() click to toggle source

Remove retrieved_by and retrieved_with when marshalling. retrieved_by contains unmarshallable objects, and retrieved_with can be very large and is not helpful without retrieved_by.

Calls superclass method
   # File lib/sequel/plugins/tactical_eager_loading.rb
83 def marshallable!
84   @retrieved_by = nil
85   @retrieved_with = nil
86   super
87 end

Private Instance Methods

load_associated_objects(opts, dynamic_opts=OPTS, &block) click to toggle source

If there the association is not in the associations cache and the object was reteived via Dataset#all, eagerly load the association for all model objects retrieved with the current object.

Calls superclass method
    # File lib/sequel/plugins/tactical_eager_loading.rb
 94 def load_associated_objects(opts, dynamic_opts=OPTS, &block)
 95   dynamic_opts = load_association_objects_options(dynamic_opts, &block)
 96   name = opts[:name]
 97   if (!associations.include?(name) || dynamic_opts[:eager_reload]) && opts[:allow_eager] != false && retrieved_by && !frozen? && !dynamic_opts[:callback] && !dynamic_opts[:reload]
 98     begin
 99       retrieved_by.send(:eager_load, retrieved_with.reject(&:frozen?), name=>dynamic_opts[:eager] || OPTS)
100     rescue Sequel::UndefinedAssociation
101       # This can happen if class table inheritance is used and the association
102       # is only defined in a subclass.  This particular instance can use the
103       # association, but it can't be eagerly loaded as the parent class doesn't
104       # have access to the association, and that's the class doing the eager loading.
105       nil
106     end
107   end
108   super
109 end