将查询组合到ActiveRecord_AssociationRelation中

时间:2016-12-06 12:56:52

标签: ruby-on-rails ruby activerecord

您好我正在处理一个项目,我需要获取两个数据库查询的结果,并将它们合并到一个ActiveRecord_AssociationRelation中,目前我已经:

results.where(pos_or_neg: "neg").order("value DESC") + (results.where(pos_or_neg: "pos").order("value ASC"))

然而,这会返回一个不起作用的数组,因为我之后需要进行更多处理。我试过了:

results.where(pos_or_neg: "neg").order("value DESC").merge(results.where(pos_or_neg: "pos").order("value ASC"))

但这似乎只返回了一半的结果。

谢谢

2 个答案:

答案 0 :(得分:0)

results.order(" pos_or_neg ASC,pos_or_neg =" neg"然后值其他-1 *值结束DESC")

答案 1 :(得分:0)

我认为使用merge相当于SQL中的AND查询。您正在寻找的是OR查询。 从Rails 5开始,这是您可以使用的Active Record查询方法之一! http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-or

尝试用.or替换你的.merge,看看它是否更好