У меня есть довольно сложный SQL-запрос, результаты которого должны быть разбиты на страницы и отображаться пользователю. Я не хочу вдаваться здесь в подробности, но проще говоря, я просто выбираю все столбцы модели и дополнительный столбец, который используется только для целей сортировки.
Note.select( ['notes.*', "<rather complicated clause> AS 'x'"] ).joins(...)...
После некоторых .join()'s
и .group()
я, наконец, вызываю .order()
и .paginate
в отношении. Если я заказываю по любому из естественных столбцов модели, все работает нормально, но если я заказываю по "искусственному" столбцу x
, то rails дает мне ошибку:
no such column: x
Похоже, это происходит из-за того, что will_paginate выполняет оператор COUNT(*)
перед получением фактических данных, просто чтобы получить объемы данных, которые он должен обработать. Этот оператор COUNT(*)
(конечно) сгенерирован из исходного оператора, который включает оператор ORDER BY x
. Теперь проблема в том, что will_paginate сохраняет ORDER BY
в операторе, но просто заменяет определения столбцов на COUNT(*)
и, таким образом, не может найти столбец x
.
Использование Rails 3
и will_paginate 3.0.pre2
.
Есть ли способ обойти это?
спасибо за любую помощь