如何从查询中获取缺失值?

时间:2012-02-26 01:11:50

标签: ruby-on-rails ruby ruby-on-rails-3

我有ForumForumTag 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

1 个答案:

答案 0 :(得分:0)

where("forum_tags.name NOT IN (?)", @tags)