如何配置Ransack Rails Gem以添加NULLS LAST进行排序

时间:2014-10-12 03:40:31

标签: ruby-on-rails ransack

我希望Ransack始终添加NULLS LAST,这将为排序列添加空值。

有什么办法吗?

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

1 个答案:

答案 0 :(得分:2)

答案可以在上面问题中链接的主题中找到。在这里写它所以更容易找到。显然,您需要再次构建订单字符串并向其添加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