4
我希望Ransack总是添加NULLS LAST
,这将使排序列中的空值最后一个。如何配置Ransack Rails Gem将NULLS LAST添加到排序
任何方式来做到这一点?
我开在这一个github上的问题:https://github.com/activerecord-hackery/ransack/issues/443
我希望Ransack总是添加NULLS LAST
,这将使排序列中的空值最后一个。如何配置Ransack Rails Gem将NULLS LAST添加到排序
任何方式来做到这一点?
我开在这一个github上的问题:https://github.com/activerecord-hackery/ransack/issues/443
答案就在上面的问题链接的线程中。在这里写它更容易找到。显然,您需要再次构建订单字符串并向其添加Null Last
。
这解决了这个问题对我来说(适用于所有列):
@q.result.except(:order).order("#{@q.sorts.first.name} #{@q.sorts.first.dir} NULLS LAST")
但是你需要排除它,当你没有任何形式的parametre,所以这是我最终的解决方案:
@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'将是ORDER BY tasks_created_at'订单重写 – agbodike 2016-09-12 01:46:36
@agbodike对相关记录进行排序的任何解决方案? – 2016-11-30 02:12:52
不,但我推迟了这项任务,因为它并不紧急,所以我没有花太多时间寻找替代方案。 – agbodike 2016-12-02 22:42:17