我想要一个标记系统,在这个系统中,我可以根据创建标记的用户来分隔标记。我遵循了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