Description
I came across this bug in a large Rails API my team is building. The issue is that ActiveRecord
count
method does not always return an integer. As explained in the docs:
If count is used with Relation#group, it returns a Hash whose keys represent the aggregated column, and the values are the respective amounts:
Person.group(:city).count # => { 'Rome' => 5, 'Paris' => 3 }
This breaks the expectation made in the various Paginator
classes that record_count
will be an integer.
The simple way to fix this is to handle the Hash
case with hash.values.sum
. I am putting in this Issue, instead of a MR, because I am not certain where in the stack you would think this should live. It could live in the AR adapter for find_count
, it could live in the Processor
when page_options[:record_count]
is created, or it could live in the Paginator
class.
If you give me any guidance on how you would like to fix this bug, I will happily put in the appropriate MR.
stephen