我有一個相當複雜的SQL查詢,其結果應該分頁並顯示給用戶。我不想在這裏詳述,但爲了簡單起見,我只選擇了模型的所有列,和另一列,僅用於排序目的。Ruby on Rails/will_paginate:按自定義列排序
Note.select(['notes.*', "<rather complicated clause> AS 'x'"]).joins(...)...
一些.join()'s
和.group()
後,我終於呼籲關係.order()
和.paginate
。如果我任何模型的自然列順序一切工作正常,如果我卻被x
「人工」列的順序,鐵軌給我的錯誤:
no such column: x
這似乎發生,因爲will_paginate似乎做一個COUNT(*)
在獲取實際數據之前,只需獲取必須處理的數據量即可。這個COUNT(*)
-statement(當然)是從原始語句生成的,其中包括ORDER BY x
。現在的問題是,will_paginate將ORDER BY
保留在聲明中,但僅用COUNT(*)
替換列定義,因此找不到列x
。使用Rails 3
和will_paginate 3.0.pre2
。
有什麼辦法來解決這個問題?
THX對於任何幫助
啊thx,那會 – DeX3