5

我试图用 Ransack 的 sort_link 对表的值进行排序。我找到了一个非常有用的例子。但是,我认为我对“不同”有问题。我收到此错误“ORDER-BY 表达式必须出现在 SELECT 列表中;清楚的'。我的代码如下所示:

q =user.joins(:buyer).order('users.name')
ransack = params["filter"]
@search = q.search(ransack)
@users = @search.result(:distinct=>true)

我忘记了什么吗?提前致谢!

4

2 回答 2

2

根据这个问题,您可以使用 ActiveRecord 连接查询或选择查询来添加所需的列来解决此问题,例如:

q = user.order('users.name')
ransack = params["filter"]
@search = q.search(ransack).
            result(:distinct=>true).
            joins(:buyer).
            includes(:buyer)
@users = @search.all
于 2015-09-29T03:26:23.137 回答
0

你有不同的真实。Ransack 使用 Postgresql 以错误的方式调用了不同的值,因此您收到此错误。如果你使用另一个数据库,你很可能不会。

因此,如果您将 distinct 设为 false,您将不会收到此错误。如果您想知道为什么需要 distinct,请查看:

  http://www.w3schools.com/sql/sql_distinct.asp

如果需要,我正在尝试找到一种包含 distinct 的方法。当我发现时,我会编辑这个答案。

于 2013-12-12T22:57:21.747 回答