【发布时间】:2011-09-02 12:56:36
【问题描述】:
我有一个相当复杂的 SQL 查询,它的结果应该分页并显示给用户。我不想在这里详细介绍,但简单地说,我只是选择模型的所有列,和一个附加列,仅用于排序目的。
Note.select( ['notes.*', "<rather complicated clause> AS 'x'"] ).joins(...)...
在一些.join()'s 和.group() 之后,我终于在关系上调用.order() 和.paginate。如果我按模型的任何自然列排序一切正常,但是如果我按“人工”列x 排序,rails 会给我错误:
no such column: x
这似乎是因为 will_paginate 似乎在获取实际数据之前执行了COUNT(*)-statement,只是为了获取它必须处理的数据量。这个COUNT(*)-语句(当然)是从原始语句生成的,其中包括ORDER BY x。现在的问题是,will_paginate 将ORDER BY 保留在语句中,但只是将列定义替换为COUNT(*),因此找不到列x。
使用Rails 3 和will_paginate 3.0.pre2。
有没有办法解决这个问题?
感谢任何帮助
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 will-paginate