Sha256: afebb2fe38313e56a2415f29883634eb5203714d7aac517f35b4b281c30d47c3

Contents?: true

Size: 1.05 KB

Versions: 5

Compression:

Stored size: 1.05 KB

Contents

require 'active_record/precount/count_loader_builder'

module ActiveRecord
  module Precount
    module Builder
      module HasManyExtension
        def valid_options(*)
          super + [:count_loader]
        end

        if ActiveRecord.version.segments.first >= 5
          def build(model, name, scope, options, &block)
            if scope.is_a?(Hash)
              options = scope
              scope   = nil
            end

            if options[:count_loader]
              CountLoaderBuilder.new(model).build_from_has_many(name, scope, options)
            end
            super
          end
        else
          def build(model)
            if options[:count_loader]
              CountLoaderBuilder.new(model).build_from_has_many(name, scope, options)
            end
            super
          end
        end
      end
    end
  end

  if ActiveRecord.version.segments.first >= 5
    Associations::Builder::HasMany.extend(Precount::Builder::HasManyExtension)
  else
    Associations::Builder::HasMany.prepend(Precount::Builder::HasManyExtension)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
activerecord-precount-0.7.0 lib/active_record/precount/has_many_extension.rb
activerecord-precount-0.7.0.beta1 lib/active_record/precount/has_many_extension.rb
activerecord-precount-0.6.3 lib/active_record/precount/has_many_extension.rb
activerecord-precount-0.6.2 lib/active_record/precount/has_many_extension.rb
activerecord-precount-0.6.1 lib/active_record/precount/has_many_extension.rb