我正在开发一个基本上充当带有标签的博客的 rails 3.2 应用程序。
标签与 has_many :through 关联中的帖子相关。(帖子通过 taggigns 有很多标签)不知道为什么该应用程序没有 habtm 关联,因为它的工作方式相同,但这就是我所拥有的。
该应用程序现在可以显示属于这样一个标签的帖子列表:
class TagsController < ApplicationController
def show
@tag = Tag.find(params[:id])
@posts = @tag.posts.paginate(page: params[:page], :per_page => 10)
end
...
end
这样,页面 example.com/tags/1 将显示标签匹配 ID 1 的所有帖子。
我要做的是修改这个应用程序,使其具有标签复选框,并将搜索限制为例如同时具有标签 1 和 4 的帖子。
有人可以给我一个关于从哪里开始或寻找一些资源的意见吗?我想我应该使用一个连接,但我不确定情况是否如此。
谢谢你。
========
编辑:谢谢你的回答。无论如何,正如 ok32 所建议的,user1083138 的解决方案是创建重复项。同时 ok32 的结果是空数组(可能是由于我对标记系统的实施不佳)。
我提出了这个很好的解决方案:
def self.tag_query(list)
Post.joins(:tags).where(:tags => { :name => list } ).having("count(tags.name) = ?", list.count ).group('posts.id')
end