Sha256: 5ca4f384014ba8db8d3652f2433544b8bc24a573830ab940bc22d503b8b377b0

Contents?: true

Size: 893 Bytes

Versions: 1

Compression:

Stored size: 893 Bytes

Contents

module EdgeRider
  module PreloadAssociations
    module PreloadAssociationsInstanceMethod
      def preload_associations(*args)
        self.class.preload_associations([self], *args)
      end
    end

    def preload_associations(*args)
      preloader = ActiveRecord::Associations::Preloader

      if preloader.method_defined?(:run) # Rails 3.2 / Rails 4
        preloader.new(*args).run
      elsif preloader.method_defined?(:preload) # Rails 5 to Rails 6.1
        preloader.new.preload(*args)
      else # Rails 7+
        records = args.first
        associations = args.second
        options = args[2] || {}
        preloader.new(records: records, associations: associations, **options).call
      end
    end
  end
end

ActiveSupport.on_load :active_record do
  extend(EdgeRider::PreloadAssociations)
  include(EdgeRider::PreloadAssociations::PreloadAssociationsInstanceMethod)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
edge_rider-2.3.1 lib/edge_rider/preload_associations.rb