活动模型序列化程序不急于加载关系
Active model Serializers not eager loading relationships
我正在使用 Bullet gem 查看我的应用程序中哪里有 n+1 个查询。它告诉我在调用我的序列化程序时急切加载我的关联 taggings
。我的代码看起来像这样:
render json: @products, each_serializer: ::V1::ProductSerializer, includes: [:taggings], links: links, status: :ok
但是在我添加之后,我仍然从 Bullet gem 收到相同的警告。看起来像这样:
GET /api/v1/product_feed?state=CA&page=1
USE eager loading detected
Product => [:taggings]
Add to your finder: :includes => [:taggings]
Call stack
/home/jay/current_projects/api/app/controllers/api/v1/products_controller.rb:111:in `product_feed'
有谁知道为什么标签 table 没有被预先加载。
您需要先在查询中包含标签,然后序列化程序才能读取加载的记录,而不是逐个记录单独请求标签关联记录
@products = Product.includes(:taggings)
render json: @products, each_serializer: ::V1::ProductSerializer, includes: [:taggings], links: links, status: :ok
我正在使用 Bullet gem 查看我的应用程序中哪里有 n+1 个查询。它告诉我在调用我的序列化程序时急切加载我的关联 taggings
。我的代码看起来像这样:
render json: @products, each_serializer: ::V1::ProductSerializer, includes: [:taggings], links: links, status: :ok
但是在我添加之后,我仍然从 Bullet gem 收到相同的警告。看起来像这样:
GET /api/v1/product_feed?state=CA&page=1
USE eager loading detected
Product => [:taggings]
Add to your finder: :includes => [:taggings]
Call stack
/home/jay/current_projects/api/app/controllers/api/v1/products_controller.rb:111:in `product_feed'
有谁知道为什么标签 table 没有被预先加载。
您需要先在查询中包含标签,然后序列化程序才能读取加载的记录,而不是逐个记录单独请求标签关联记录
@products = Product.includes(:taggings)
render json: @products, each_serializer: ::V1::ProductSerializer, includes: [:taggings], links: links, status: :ok