Rails: как получить объекты хотя бы с одним потомком?
После поиска в Google, просматривая ТАК ичтениеПохоже, в 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
.