我有一个像
这样的ActiveRecord查询Post.where("likes > 3")
我希望在我的结果中获取来自acts_as_taggable_on的标签。例如
之类的东西Post.select("posts.*, tag_list").where("likes > 3")
显然这不起作用,需要进行大量的连接才能从acts_as_taggable_on获取与Post相关的标签。 acts_as_taggable_on是否提供任何方式来选择'标签?
我可以使用以下内容访问标记:
Post.where("likes > 3").each do |p|
puts p.to_json
puts p.tag_list.to_json
end
但是这导致了很多查询,因为有很多帖子。还有更好的方法吗?
答案 0 :(得分:0)
我找到了一种让它工作的方法,但我希望有更好的方法,内置于acts_as_taggable_on。也许有更好的方法,但这似乎有效:
Post.select("posts.*, tags.name as tag")
.where("likes > 3")
.joins(:taggings)
.joins("LEFT OUTER JOIN tags on tags.id = taggings.tag_id")