6

ActiveModel Serializers を使用して関連付けを含む一連のモデルの JSON を生成すると、大量の SQL クエリ (関連付けごとに 1 つ) が生成されることがわかりました。どうすればこれを回避できますか?

コントローラーにインクルードしようとしました:

render json: Project.includes(tasks: [:workers])

しかし、これはうまくいかないようです。リレーションを (インクルード付きで) 直接 ArraySerializer に渡しても役に立ちません。

4

5 に答える 5

1

これは少し急進的ですが、多くのヒットがあった複雑なクエリの場合、JSON 生成全体をデータベース クエリに移動しました (これをサポートする Postgres 9.3 を使用しています)。かなり生のSQLが必要なため、おそらく最もクリーンなソリューションではありませんが、高速です。

誰かが興味を持っている場合は、例を更新します。

于 2014-07-17T00:36:35.080 に答える
0

ドキュメント[1]によると、あなたは正しいことをしています。シリアライザーは、オブジェクトをシリアライズするだけです。そのため、シリアライザーを呼び出す前に、必要なものをすべて熱心にロードする必要があります。

1 - https://github.com/rails-api/active_model_serializers#performance

于 2013-12-13T14:12:17.113 に答える
-1

ラブルに乗り換えました。よりきめ細かく、より優れた制御

于 2013-10-02T16:15:38.077 に答える