0

我想要一个标签系统,我可以通过创建标签的用户来分隔标签。我遵循 Railscast #167 关于使用虚拟属性设置标签的方法,但这种方式只能让我调用 @post.tags 来查找帖子的标签,但我不能调用 @user.tags 并找到它们的所有标签。

我怎样才能增强它,以便 @user.posts.tag("music") 返回他们所有带有标签音乐的帖子?

感谢您提供帮助或洞察我做错了什么。

4

1 回答 1

2

@user.posts返回一个数组,因此您可以使用以下内容轻松过滤它:

@user.posts.select do |post|
  post.tag_names.include? "music"
end

但是,您可能会遇到在这种情况下未急切加载记录的问题。这样的事情应该解决这个问题:

Post.includes(:taggings => :tags).where("posts.user_id = ?", @user.id).select do |post|
  post.tag_names.include? "music"
end
于 2011-06-24T06:55:24.667 回答