Activerecord: поиск несвязанных и связанных записей одним запросом - PullRequest
2 голосов
/ 29 марта 2009

Учитывая следующий сценарий, используя activerecord:

Пользователь принадлежит_ к событию

Я хочу найти всех пользователей, у которых нет события с именем «party».

Итак, я попробовал следующее:

User.all(:joins => :event, :conditions => ["events.name != ?", "party"])

Однако, это вернет только тех пользователей, у которых есть событие, но только не "вечеринка". Он не вернет всех пользователей, у которых вообще нет событий, потому что: объединения автоматически ограничивают результаты только связанными записями.

Я мог бы сделать два запроса и добавить результаты вместе, но есть ли способ, в одном запросе, выбрать несвязанные записи плюс соответствующие записи, которые соответствуют условию?

1 Ответ

3 голосов
/ 29 марта 2009

Как насчет этого?

User.all(
  :include => :event, 
  :conditions => ["users.event_id IS NULL OR events.name != ?", "party"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...