【发布时间】:2012-09-25 22:35:19
【问题描述】:
我正在开发一个 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
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord