module ActiveRecordGroupCount extend ActiveSupport::Concern module ExtensionMethods def count(*args) scope = except(:select).select("1") query = "SELECT count(*) AS count_all FROM (#{scope.to_sql}) x" ActiveRecord::Base.connection.execute(query).first.first end end module ClassMethods def returns_count_sum scoped.extending(ExtensionMethods) end end end ActiveRecord::Base.send :include, ActiveRecordGroupCount # usage: # Model.group(:something).returns_count_sum.count # faster Kaminari pagination: # Model.returns_count_sum.page(1).per(10).total_pages