我想要一个标签系统,我可以通过创建标签的用户来分隔标签。我遵循 Railscast #167 关于使用虚拟属性设置标签的方法,但这种方式只能让我调用 @post.tags 来查找帖子的标签,但我不能调用 @user.tags 并找到它们的所有标签。
我怎样才能增强它,以便 @user.posts.tag("music") 返回他们所有带有标签音乐的帖子?
感谢您提供帮助或洞察我做错了什么。
我想要一个标签系统,我可以通过创建标签的用户来分隔标签。我遵循 Railscast #167 关于使用虚拟属性设置标签的方法,但这种方式只能让我调用 @post.tags 来查找帖子的标签,但我不能调用 @user.tags 并找到它们的所有标签。
我怎样才能增强它,以便 @user.posts.tag("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