Я использую Kaminari для разбивки на страницы некоторых результатов запроса, в котором я выбираю отдельные записи. Рассмотрим следующий код контроллера:
@things = Thing.joins... # create a complex query that produces duplicate results
# I want to select distinct results: this produces the correct results
@things = @things.select("DISTINCT things.*")
# when Kaminari calls count, it will run "SELECT COUNT(*)", instead of
# "SELECT COUNT(DISTINCT things.*)" we will get the wrong count and extra pages
@things = @things.page(params[:page]).per(10)
Лучшее решение, которое я могу придумать, - передать : independent => true
в count
, как в этот запрос на перенос ], который был отклонен разработчиком Каминари. Этот вопрос SO обсуждает основную проблему. Эта строка кода является оскорбительным вызовом count
.
Существуют ли какие-либо обходные пути, которые предоставят Каминари правильный счетчик, не требующие исправления Каминари? Благодарю.
ОБНОВЛЕНИЕ: