module Goldiloader::AssociationLoader
Public Instance Methods
load(model, association_name)
click to toggle source
# File lib/goldiloader/association_loader.rb, line 7 def load(model, association_name) models = model.auto_include_context.models.select do |peer| load?(peer, association_name) end eager_load(models, association_name) end
Private Instance Methods
eager_load(models, association_name)
click to toggle source
# File lib/goldiloader/association_loader.rb, line 17 def eager_load(models, association_name) if Goldiloader::Compatibility.pre_rails_7? ::ActiveRecord::Associations::Preloader.new.preload(models, [association_name]) else ::ActiveRecord::Associations::Preloader.new(records: models, associations: [association_name]).call end end
has_association?(model, association_name)
click to toggle source
# File lib/goldiloader/association_loader.rb, line 32 def has_association?(model, association_name) # rubocop:disable Naming/PredicateName model.class.reflect_on_association(association_name).present? end
load?(model, association_name)
click to toggle source
# File lib/goldiloader/association_loader.rb, line 25 def load?(model, association_name) # Need to make sure the model actually has the association which won't always # be the case in STI hierarchies e.g. only a subclass might have the association has_association?(model, association_name) && model.association(association_name).auto_include? end