【问题标题】:How to configure Ransack Rails Gem to add NULLS LAST to sort如何配置 Ransack Rails Gem 以添加 NULLS LAST 进行排序
【发布时间】:2014-10-12 03:40:31
【问题描述】:

我希望 Ransack 始终添加 NULLS LAST,这会将空值放在排序列的最后。

有什么办法吗?

我在这个问题上打开了一个 github 问题:https://github.com/activerecord-hackery/ransack/issues/443

【问题讨论】:

    标签: ruby-on-rails ransack


    【解决方案1】:

    答案可在上述问题的链接中找到。把它写在这里,这样更容易找到。显然您需要再次构建订单字符串并将Null Last 添加到其中。

    这为我解决了(适用于所有列):

    @q.result.except(:order).order("#{@q.sorts.first.name} #{@q.sorts.first.dir} NULLS LAST")
    

    但是当你没有任何排序参数时你需要排除它,所以这是我的最终解决方案:

    @q = Project.ransack(params[:q])
    @fields = current_user.settings.default_project_fields
    if @q.sorts.present?
      @result = @q.result.except(:order).order("#{@q.sorts.first.name} #{@q.sorts.first.dir} NULLS LAST")
    else
      @result = @q.result
    end
    

    【讨论】:

    • 这是一个很好的解决方案,但在对关联记录进行排序时不起作用,因为它使用排序链接中的原始值...例如,ORDER BY tasks.created_at 在订单重写
    • @agbodike 对关联记录进行排序的任何解决方案?
    • 没有,但我推迟了任务,因为它不紧急,所以我没有花太多时间寻找替代方案。
    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 2020-02-21
    • 2014-07-30
    • 2013-02-13
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    相关资源
    最近更新 更多