Sha256: f64c492fdf95c9a454e634ce2558e19ce676b67fd9d97151dfdb96e3d5e765f8

Contents?: true

Size: 889 Bytes

Versions: 22

Compression:

Stored size: 889 Bytes

Contents

# frozen_string_literal: true

module ActiveRecord
  module Railties # :nodoc:
    module CollectionCacheAssociationLoading #:nodoc:
      def setup(context, options, as, block)
        @relation = relation_from_options(**options)

        super
      end

      def relation_from_options(cached: nil, partial: nil, collection: nil, **_)
        return unless cached

        relation = partial if partial.is_a?(ActiveRecord::Relation)
        relation ||= collection if collection.is_a?(ActiveRecord::Relation)

        if relation && !relation.loaded?
          relation.skip_preloading!
        end
      end

      def collection_without_template(*)
        @relation.preload_associations(@collection) if @relation
        super
      end

      def collection_with_template(*)
        @relation.preload_associations(@collection) if @relation
        super
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
activerecord-6.0.6.1 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.6 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.5.1 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.5 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4.8 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4.7 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4.6 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4.5 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4.4 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4.3 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4.2 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4.1 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.4 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.3.7 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.3.6 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.3.5 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.3.4 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.3.3 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.3.2 lib/active_record/railties/collection_cache_association_loading.rb
activerecord-6.0.3.1 lib/active_record/railties/collection_cache_association_loading.rb