我需要以这样的方式获得两个ActiveRecord::Relation
对象的并集,结果应该是另一个活动记录关系。我怎么能做到这一点?
答案 0 :(得分:8)
Rails 5的更新
ActiveRecord
现在为UNION
/ OR
查询提供了内置支持!现在你可以(以下例子来自this nice post。确保你阅读完整帖子了解更多技巧和限制):
Post.where(id: 1).or(Post.where(title: 'Learn Rails'))
或与having
合并:
posts.having('id > 3').or(posts.having('title like "Hi%"'))
甚至与范围混合:
Post.contains_blog_keyword.or(Post.where('id > 3'))
原始答案如下
我认为AR不提供联合方法。您既可以执行原始SQL,也可以使用SQL的UNION或执行2个不同的查询,并将结果合并到Rails中。
或者你可以看看这些自定义" hacks": ActiveRecord Query Union或 https://coderwall.com/p/9hohaa