【问题标题】:How to avoid rails as_json creating flood of database requests如何避免 rails as_json 创建大量数据库请求
【发布时间】:2020-02-21 15:21:20
【问题描述】:

我有一个模型 questions,它通过另一个模型 question_tags 有许多 标签。我正在尝试编写一个 api 端点,该端点返回一个问题列表,并为每个问题列出它的相关标签名称和 ID。

我正在使用;

render json: @questions.as_json(include: {
                                      tags: { only: %i[id name] }
                                    })

但这会为问题中的每个问题运行一个单独的数据库请求,是否有替代方案会导致更少的数据库请求?

【问题讨论】:

    标签: sql ruby-on-rails database


    【解决方案1】:

    标准的 N+1 查询修复应该在这里工作,这在 Rails 中是急切加载。

    在这种情况下,您可以使用include 预加载关联的tags

    render json: @questions.includes(:tags).as_json(
      include: {
        tags: { only: %i[id name] }
      }
    )
    

    您可以在专门的导轨部分阅读更多相关信息:Eager Loading Associations

    【讨论】:

      猜你喜欢
      • 2018-10-06
      • 1970-01-01
      • 2020-09-23
      • 2021-12-05
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多