Rails: найти всех родителей со всеми детьми, имеющими определенный атрибут - PullRequest
2 голосов
/ 11 апреля 2019

Мне нужно найти всех родителей, у которых есть ВСЕ дети со статусом = 1.

Если у одного из детей нет статуса = 1;тогда родитель не выбран.

class Parent
  has_many :children
end

class Child
  status = [ 0, 1 ]
end

Я пробовал это, но это не работает.

Parent.left_outer_joins(:children).where("children.status = ?", 1)

Это не работает, потому что я все еще получаю статус Родитель с детьми= 0

Ответы [ 3 ]

0 голосов
/ 12 апреля 2019

Думаю, вам понадобится подзапрос:

Parent.where.not(id: Children.where.not(status: 1).select(:parent_id))
0 голосов
/ 12 апреля 2019

Попробуйте это:

Parent.where("id NOT IN (SELECT DISTINCT(parent_id) FROM children WHERE children.status =1)")

Надеюсь, вы найдете это полезным !!!

0 голосов
/ 11 апреля 2019

Я думаю, вы могли бы сделать что-то вроде этого:

Parent.joins(:children).where.not(
  id: Child.where(status: :closed).select('DISTINCT "parent_id"')
).distinct
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...