ruby-on-rails - ActiveRecord:查询父记录,其中子记录在 AND 查询中具有某些值
问题描述
通常我知道,如果您将一组值传递给 ActiveRecord 查询,它会像 OR 语句一样执行它。也就是说:
Parent.joins(:kiddos).where(kiddos: {rando_attr:[1,2]})
此查询查找Parent
父对象具有1 或 2的对象的kiddo
对象。rando_attr
但是,在我的情况下,我想查找Parent
父对象的kiddo
对象rando_attr
为 1,并且还具有kiddo
对象rando_attr
为 2 的对象。
我将如何编写此查询?
解决方案
Parent.joins(:kiddos)
.where(kiddos: {rando_attr:[1,2]})
.group(:id).having('COUNT(DISTINCT(kiddos.rando_attr)) = 2')
推荐阅读
- php - 原因:未找到与请求 URI 匹配的 HTTP 资源
- angular - 如何在不丢失登录信息的情况下使用守卫?(角度 10)
- php - Laravel API 认证中间件
- javascript - 我可以在前端 javascript 中使用纯 grpc(不是 grpc-web)吗
- tomcat - 如何修改 Jboss 部署战争文件中的文件?
- python - “RawReactionActionEvent”对象没有属性“消息”
- html - 当左列采用百分比宽度时,如何使右列采用固定宽度?
- java - 如何将外部数据源与 Cucumber 特征文件集成
- apache-spark - SparkMagic:在其他 Jupyter 笔记本中重用 SparkSession
- twig - 检查 url 树枝中的参数