【问题标题】: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 的方法。当我发现时,我会编辑这个答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多