2012-02-26 14 views
0

私はForumForumTag HABTM関係を持っています。私はまた@tagsという名前の変数の配列を持っています。この配列には、フォーラムをフィルタリングするために使用するいくつかのForumTagsの名前が含まれています。私は現在、配列@タグ内のすべてのタグを持つすべてのフォーラムを取得するためにクエリを実行します。クエリから欠損値を取得する方法は?

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

しかし、返されたフォーラムに含まれていて、配列には含まれていないタグも検索できます。質問ページの右側にあるStackoverflowの 'Related Tags'のリストに似ています。例えば

、私は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 

答えて

0
where("forum_tags.name NOT IN (?)", @tags) 
関連する問題