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 132 def marshallable! 133 @retrieved_by = nil 134 @retrieved_with = nil 135 super 136 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 143 def load_associated_objects(opts, dynamic_opts=OPTS, &block) 144 dynamic_opts = load_association_objects_options(dynamic_opts, &block) 145 name = opts[:name] 146 if (!associations.include?(name) || dynamic_opts[:eager_reload]) && opts[:allow_eager] != false && retrieved_by && !frozen? && !dynamic_opts[:callback] && !dynamic_opts[:reload] 147 begin 148 retrieved_by.send(:eager_load, retrieved_with.reject(&:frozen?), name=>dynamic_opts[:eager] || OPTS) 149 rescue Sequel::UndefinedAssociation 150 # This can happen if class table inheritance is used and the association 151 # is only defined in a subclass. This particular instance can use the 152 # association, but it can't be eagerly loaded as the parent class doesn't 153 # have access to the association, and that's the class doing the eager loading. 154 nil 155 end 156 end 157 super 158 end