After googling, browsing SO and reading, there doesn't seem to be a Rails-style way to efficiently get only those Parent objects which have at least one Child object (through a has_many :children relation). In plain SQL:

SELECT *
  FROM parents
 WHERE EXISTS (
               SELECT 1
                 FROM children
                WHERE parent_id = parents.id)

The closest I've come is

Parent.all.reject { |parent| parent.children.empty? }

(based on another answer), but it's really inefficient because it runs a separate query for each Parent.

Edit
Report