Отношение "has_one" - как выбрать элементы, которые имеют ноль? - PullRequest
1 голос
/ 26 сентября 2019

Предполагается, что у меня есть модель Билета, и у этого Билета есть одна проблема:

has_one :issue, inverse_of: :ticket

Мне нужно определить запрос, который выбирает только Билеты, которые не имеют проблемы (имеет nil вместо).Я пробовал "include", я пробовал "left_joins", но не работает.Все еще получили Билеты с проблемами.Мне нужно что-то вроде этого (конечно, это не может работать, но описывает, что мне нужно):

Ticket.where(issue: nil)

1 Ответ

3 голосов
/ 26 сентября 2019

У вас есть left_joins (псевдоним для left_outer_joins) для этого:

Ticket.left_joins(:issue).where(issues: { id: nil })
# SELECT "tickets".*
# FROM "tickets"
# LEFT OUTER JOIN "issues"
# ON "issues"."ticket_id" = "tickets"."id"
# WHERE "issues"."id" IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...