【问题标题】:Add "select tags" to ActiveRecord query with acts_as_taggable_on使用acts_as_taggable_on 将“选择标签”添加到ActiveRecord 查询
【发布时间】:2016-02-25 10:06:48
【问题描述】:

我有一个 ActiveRecord 查询,例如

Post.where("likes > 3")

并且我希望在我的结果中从acts_as_taggable_on 获取标签。例如像

Post.select("posts.*, tag_list").where("likes > 3")

显然这不起作用,需要进行大量连接才能从acts_as_taggable_on 获取与帖子相关的标签。 act_as_taggable_on 是否提供任何“选择”标签的方法?

我可以通过以下方式访问标签:

Post.where("likes > 3").each do |p|
    puts p.to_json
    puts p.tag_list.to_json
end

但这会导致很多查询,因为有很多帖子。有没有更好的办法?

【问题讨论】:

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


    【解决方案1】:

    我找到了一种让它工作的方法,但我希望有一种更好的方法,内置于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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-10
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2016-10-04
      • 1970-01-01
      相关资源
      最近更新 更多