Sql Rails将集合分成相等的部分,对每个部分进行排序并连接在一起

Sql Rails将集合分成相等的部分,对每个部分进行排序并连接在一起,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我想提取我的产品.where(库存:0)和产品.where.not(库存:0)。然后,我想按price ASC对集合的每个部分进行排序,并将它们连接在一起,以便首先显示已排序的库存项目,然后显示已排序的缺货项目 应将工作.merge应用于AR关系,但它在Rails 5.2.X上不工作 另外,Rails 5在按ID的排序数组进行查找方面也很好,但它返回的是数组,而不是AR关系 有没有办法编写干净的、可维护的工作代码?流行的Postgresworkarounds在集合包含>100个实例时失败 关于如

我想提取我的
产品.where(库存:0)
产品.where.not(库存:0)
。然后,我想按
price ASC
对集合的每个部分进行排序,并将它们连接在一起,以便首先显示已排序的库存项目,然后显示已排序的缺货项目

应将工作
.merge
应用于AR关系,但它在Rails 5.2.X上不工作

另外,Rails 5在按ID的排序数组进行查找方面也很好,但它返回的是
数组
,而不是AR关系

有没有办法编写干净的、可维护的工作代码?流行的
Postgres
workarounds在集合包含>100个实例时失败


关于如何用纯SQL实现它有什么想法吗?

ORDER
在一个查询中获得它怎么样

ORDER BY case in_stock when 0 then 2 else 1 end, net_price ASC
这将把所有
库存:0
记录推到底

用AR查询

Product.all.order(Arel.sql("ORDER BY case in_stock when 0 then 2 else 1 end, net_price ASC"))
我使用的是
Arel.sql
,因为有一个弃用警告:

Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s)