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