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)