You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails中如何排序对象并将new_response为true的记录前置?

解决方案

你需要调整排序的优先级,先按new_response倒序(让true的记录排在最前面),再按id倒序,这样既能保证带未读响应的请求前置,同时同组内的记录也按ID从新到旧排列。

直接用多条件排序即可实现:

@requests = current_fan.handled_requests.order(new_response: :desc, id: :desc)

如果你的Rails版本较低,不支持哈希式的order参数,可以用SQL字符串写法:

@requests = current_fan.handled_requests.order("new_response DESC, id DESC")

为什么你之前的写法无效?

  • 你第一次尝试的两次order调用,后面的order(:new_response)会覆盖之前的排序逻辑,reverse_order反转的id排序会被后续的order操作冲掉,最终只会按new_response升序排列(false在前,true在后),和你的需求相反。
  • prioritize并不是Active Record的内置方法,所以这个调用会直接报错。

内容的提问来源于stack exchange,提问作者daveasdf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:33:14