У меня есть отношения 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