ruby-on-rails - 组合两个 ActiveRecord::Relation 对象

标签 ruby-on-rails rails-activerecord arel

假设我有以下两个对象:

first_name_relation = User.where(:first_name => 'Tobias') # ActiveRecord::Relation
last_name_relation  = User.where(:last_name  => 'Fünke') # ActiveRecord::Relation

是否可以将这两个关系组合起来生成一个包含这两个条件的 ActiveRecord::Relation 对象?

注意:我知道我可以链接 wheres 来获得此行为,我真正感兴趣的是我有两个单独的 ActiveRecord::Relation 对象的情况.

最佳答案

如果您想使用 AND(交集)进行组合,请使用 merge :

first_name_relation.merge(last_name_relation)

如果您想使用OR(并集)进行组合,请使用or :

first_name_relation.or(last_name_relation)
<小时/>

仅在 ActiveRecord 5+ 中;对于 4.2,安装 where-or向后移植。

关于ruby-on-rails - 组合两个 ActiveRecord::Relation 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540801/

相关文章:

ruby-on-rails - 向 activeadmin 列添加一个更新资源属性的按钮

ruby-on-rails - Rails 5 Active Record - 是否可以在内存中保存一个表?

ruby-on-rails - `def self.myMethod` 和 `def myMethod` 之间有什么区别吗?

ruby-on-rails - 异常通知 - 如何在开发中关闭。模式

ruby-on-rails - 出现意外 ',' ,期待 => 禁止错误

sql - 将 SQL 查询转换为 ActiveRecord 查询

ruby-on-rails - Ruby on rails-将 activeRecord 转换为数组

ruby-on-rails - 如何在 Rails 3 中订购包含的元素

ruby-on-rails - 使用 Rails 查询语言进行复杂查询

ruby-on-rails - 解构 Rails .joins 和 .where 方法