Как получить пропущенные значения из запроса? - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть отношения Forum и ForumTag HABTM.У меня также есть массив переменных с именем @tags.Этот массив содержит имена некоторых тегов ForumTag, которые я использую для фильтрации форумов.В настоящее время я запрашиваю все форумы, которые имеют ВСЕ теги в массиве @ tags.

@forums = Forum.joins(:forum_tags).where(:forum_tags => {:name => @tags})
               .group("forums.id").having(['COUNT(*) = ?', @tags.length])
               .includes(:forum_tags).all

Однако я также хочу иметь возможность найти теги, которые являются частью возвращенных форумов,но НЕ в массиве.Аналогично списку связанных тегов Stackoverflow в правой части страницы с вопросом.

Например, если у меня есть 4 форума:

forum A = tags are ['foo', 'bar']
forum B = tags are ['foo', 'bar', 'blah']
forum C = tags are ['foo', 'bar', 'blee']
forum D = tags are ['blah']

if @tags = ['foo','bar'], then it should return ['blah','blee']
   with the count on blah=1, and count on blee=1

1 Ответ

0 голосов
/ 26 февраля 2012
where("forum_tags.name NOT IN (?)", @tags)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...