我有一个相当复杂的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