假设我有以下两个对象:

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

是否有可能将这两种关系结合起来,生成一个包含这两种条件的ActiveRecord::Relation对象?

Note: I'm aware that I can chain the wheres to get this behavior, what I'm really interested in is the case where I have two separate 100 objects.

推荐答案

如果要使用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相关问答推荐

rails:如何在表单验证后使用涡轮刷新列表

Rails 7 Active Record::SessionStore -如何获取控制器中当前会话的数据库ID?

错误正在被ViewComponent、Ruby on Rails中吞噬

是否从已转换为字符串的数组中提取符号?

如何在哪里查询 Rails 模型中定义的方法

如何在 Ruby on Rails 中正确存储 BigDecimal

URL 中的 Rails slugs - 使用 Active Record Model Post 的 Title 属性而不是 ID

Rails Scope 返回 all 而不是 nil

如何在 Ruby on Rails 中创建一个锚点并重定向到这个特定的锚点

有没有办法在模型而不是视图中使用复数()?

将 defer 属性添加到 javascript_include_tag Rails

在 Rails 4 中检测用户代理 - 读取 HTTP 标头

在公共 Rails 应用程序中将敏感数据存储在哪里?

Ruby on Rails 错误无法加载此类文件 - 更少

将图标添加到 Rails 应用程序

Groovy/Grails :: Ruby/Rails :: 2011 框架状态

表单中的第一个参数不能包含 nil 或为空 - Rails 4

设计:在注册期间禁用密码确认

如何一次显示一条 Ruby on Rails 表单验证错误消息?

Postgresql JSON 数据列不同