如何使 ember、rails 和 active_model_serializers 对 hasMany 关系执行一个查询?

How to make ember, rails and active_model_serializers execute one query on hasMany relationship?

我正在使用 ember 与 rails 和 active_model_serializers。

假设我有一个名为报告的模型,它有很多统计数据。假设一份报告有 2000 个统计数据。当我打电话时:

report.get('statistics').then(statistics => {
  //Do something
});

我从我的数据库中得到 2000 次单独的 api 统计调用和 2000 次单独的选择。

当我像这样将 include:['statistics'] 添加到控制器方法时:

def show
  render json: @report, include:['statistics']
end

我遇到了同样的问题。

我不确定我是否必须对 ReportSerializer.rb 文件做些什么才能启用一个查询而不是 2000 的评论关系。

在仅 rails 的应用程序中,调用我的关联会生成一个查询。虽然我意识到 ember 不是 rails,但我认为我遗漏了一些简单的东西。

那么,如何使访问我的模型上的关联生成一个 api 调用和一个查询?或者至少减少 api 调用和查询的数量?

添加信息

需要所有关联的统计信息,以便可以对报告进行操作。

我无法找到一种方法让 ember 数据和我的 rails 后端生成一个查询和一个 api 调用来获取模型的关联。所以我在报表控制器中创建了另一个方法,它只处理发送关联。

def include_statistics
  render json: Report.find(params[:id]).statistics.to_json
end

在我的 ember 客户端中,我调用以下内容:

$.ajax({
  type: 'GET',
  url: '/api/v1/reports/1/include_statistics'
}).then(points => {
    //Do something
});