Например, у меня есть 2 таблицы: темы и комментарии.
тема имеет множество комментариев. комментарий принадлежит к теме.
В таблице комментариев есть столбец sender_id, в котором я сохраняю идентификатор пользователя, создавшего этот комментарий.
Задача: выбрать идентификаторы тем, которые не комментирует этот пользователь (я знаю user_id).
(Я хочу сделать это одним запросом).
Раньше я так и делал. (два запроса) (Моя база данных - PostgreSQL)
incorrect_topics = Comment.select(:topic_id).where(:sender_id => user_id).map { |elem| elem.topic_id }
ids = select(:id).where(["id NOT IN (?)", incorrect_topics]).map { |elem| elem.id }
Работает нормально, но я полагаю, что если приложение станет больше, это будет серьезной проблемой.
Спасибо.