添加"选择标签"使用acts_as_taggable_on

时间:2016-02-25 10:06:49

标签: ruby-on-rails ruby activerecord acts-as-taggable-on

我有一个像

这样的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

但是这导致了很多查询,因为有很多帖子。还有更好的方法吗?

1 个答案:

答案 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")