Rails3:Railscast#167用于创建标记的虚拟属性-@user.tags



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

我怎么能增加这个功能,让@user.posts.tag("music")用标签music返回他们所有的帖子呢?

谢谢你对我做错了什么的帮助或见解。

@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

相关内容

  • 没有找到相关文章

最新更新