module ActiveRecord::Precount::RelationExtension
Public Instance Methods
eager_count(*args)
click to toggle source
# File lib/active_record/precount/relation_extension.rb, line 18 def eager_count(*args) check_if_method_has_arguments!(:eager_count, args) spawn.eager_count!(*args) end
eager_count!(*args)
click to toggle source
# File lib/active_record/precount/relation_extension.rb, line 23 def eager_count!(*args) CountLoaderBuilder.new(klass).build_from_query_methods(*args) self.eager_load_values += args.map { |arg| :"#{arg}_count" } self end
precount(*args)
click to toggle source
# File lib/active_record/precount/relation_extension.rb, line 6 def precount(*args) check_if_method_has_arguments!(:precount, args) spawn.precount!(*args) end
precount!(*args)
click to toggle source
# File lib/active_record/precount/relation_extension.rb, line 11 def precount!(*args) CountLoaderBuilder.new(klass).build_from_query_methods(*args) self.preload_values += args.map { |arg| :"#{arg}_count" } self end
Private Instance Methods
apply_join_dependency(relation, join_dependency)
click to toggle source
Calls superclass method
# File lib/active_record/precount/relation_extension.rb, line 32 def apply_join_dependency(relation, join_dependency) relation = super # to count associated records in JOIN query, group scope is necessary join_dependency.reflections.each do |reflection| if reflection.macro == :count_loader ar = reflection.active_record relation = relation.group("#{ar.table_name}.#{ar.primary_key}") end end relation end