我正在做一個簡單的博客應用程序 - 有帖子,其中有很多標籤通過posts_tags表(我的模型如下)。我已經實現的是,如果用戶點擊標籤,它將只顯示帶有該標籤的帖子。我想要的是讓用戶能夠選擇另一個標籤,並且它只會過濾到包含這兩個標籤的帖子,然後是第三個,然後是第四個等。我很難製作活動記錄查詢 - 尤其是動態的。我得到的最接近的是下面列出的 - 不過它在純SQL中,我想至少在ActiveRecord Rubyland語法中包含它,即使它包含的複雜性也是如此。篩選父母的子女
此外,「有計數2」不起作用,它說「計數」不存在,即使我給它分配一個名稱。但是,它在我的表格中輸出(計數背後的想法是,如果它包含的數字與我們搜索的標籤數量相同,則理論上/理想情況下它包含所有標籤)
我目前的測試SQL查詢
select posts_tags.post_id,count(*) from posts_tags where tag_id=1 or tag_id=3 group by post_id ### having count=2
測試SQL的輸出(我知道它不包含很多,但只是一些簡單的種子數據)。
post_id | count
---------+-------
1 | 2
2 | 1
我的模型: /post.rb
class Post < ActiveRecord::Base
has_many :posts_tags
has_many :tags, :through => :posts_tags
end
/tag.rb
class Tag < ActiveRecord::Base
has_many :posts_tags
has_many :posts, :through => :posts_tags
end
/poststag.rb
class PostsTag < ActiveRecord::Base
belongs_to :tag
belongs_to :post
end
這是神奇的。我將花費相當長的一段時間去解決這個問題!非常感謝 – cadlac