两个活跃记录关系的联盟应该是ruby on rails的另一个活跃记录

时间:2014-04-23 12:50:35

标签: ruby-on-rails activerecord

我需要以这样的方式获得两个ActiveRecord::Relation对象的并集,结果应该是另一个活动记录关系。我怎么能做到这一点?

1 个答案:

答案 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 Unionhttps://coderwall.com/p/9hohaa