После поиска в Интернете, просмотра SO и чтения, похоже, не существует стиля Rails для эффективного получения только тех Parent
объекты, имеющие хотя бы один объект Child
(через отношение has_many :children
). В простом SQL:
SELECT *
FROM parents
WHERE EXISTS (
SELECT 1
FROM children
WHERE parent_id = parents.id)
Ближайший я пришел
Parent.all.reject { |parent| parent.children.empty? }
(на основе другого ответа), но он действительно неэффективен, потому что он выполняет отдельный запрос для каждого Parent
.