Я закончил тем, что придумал что-то вроде этого ...
Family.find_by_sql("SELECT * FROM kids WHERE NOT EXISTS ( SELECT NULL FROM kids WHERE kids.family_id = family.id AND family.age_group != 'baby')")
По моим ограниченным данным, все семьи, в которых есть только дети, были получены. Однако я не тестировал это всесторонне, потому что он не был расширяемым. Так как я должен был использовать find_by_sql
, я не мог связать это с другими activerecord, где вызовы или добавить нумерацию страниц к этому.
Я решил пойти другим путем и создать столбец family_stage
в семье, и дети в любое время обновляются или добавляются в семью для обновления family_stage
. Это делает запросы ко всему намного проще и переводит обработку на обновления.