module ActiveRecord::Calculations
def perform_calculation(operation, column_name)
def perform_calculation(operation, column_name) operation = operation.to_s.downcase # If #count is used with #distinct (i.e. `relation.distinct.count`) it is # considered distinct. distinct = distinct_value if operation == "count" column_name ||= select_for_count if column_name == :all if !distinct distinct = distinct_select?(select_for_count) if group_values.empty? elsif group_values.any? || select_values.empty? && order_values.empty? column_name = primary_key end elsif distinct_select?(column_name) distinct = nil end end if group_values.any? execute_grouped_calculation(operation, column_name, distinct) else execute_simple_calculation(operation, column_name, distinct) end end