【问题标题】:distinct for sorting with ransack与 ransack 进行排序不同
【发布时间】:2013-11-11 15:57:07
【问题描述】:
我试图使用 Ransack 中的 sort_link 对表的值进行排序。我发现an example 真的很有帮助。但是,我认为我对“不同”有问题。我收到此错误“ORDER-BY 表达式必须出现在 SELECT 列表中;清楚的'。
我的代码如下所示:
q =user.joins(:buyer).order('users.name')
ransack = params["filter"]
@search = q.search(ransack)
@users = @search.result(:distinct=>true)
我忘记了什么吗?提前致谢!
【问题讨论】:
标签:
ruby-on-rails
sorting
distinct
ransack
【解决方案1】:
根据this issue,您可以通过 ActiveRecord 连接查询或选择查询来添加所需的列来解决此问题,例如:
q = user.order('users.name')
ransack = params["filter"]
@search = q.search(ransack).
result(:distinct=>true).
joins(:buyer).
includes(:buyer)
@users = @search.all
【解决方案2】:
你有不同的为真。 Ransack 使用 Postgresql 以错误的方式调用了不同的值,因此您收到此错误。如果你使用另一个数据库,你很可能不会。
因此,如果您将 distinct 设为 false,则不会出现此错误。如果您想知道为什么需要 distinct,请查看:
http://www.w3schools.com/sql/sql_distinct.asp
如果需要,我正在尝试找到一种包含 distinct 的方法。当我发现时,我会编辑这个答案。