首页 > 解决方案 > 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 的对象。

我将如何编写此查询?

标签: ruby-on-railsactiverecord

解决方案


Parent.joins(:kiddos)
.where(kiddos: {rando_attr:[1,2]})
.group(:id).having('COUNT(DISTINCT(kiddos.rando_attr)) = 2')

推荐阅读