我想要一个标记系统,我可以用创建它们的用户分隔标记。我按照Railscast#167关于使用虚拟属性设置标签,但这种方式只允许我调用@ post.tags来查找帖子的标签,但我不能调用@ user.tags并查找所有标签。
我怎样才能增加这一点,以便@ user.posts.tag(“music”)能够使用标签音乐返回所有帖子?
感谢您帮助或洞察我做错了什么。
答案 0 :(得分: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