3

Ich verwende den Bullet-Edelstein, um zu sehen, wo es n + 1 Abfragen in meiner Anwendung gibt. Es sagt mir, dass ich meine Verbindung taggings beim Aufruf meines Serialisierers laden soll. Mein Code sieht in etwa wie folgt aus:Aktives Modell Serializer nicht begierig laden Beziehungen

render json: @products, each_serializer: ::V1::ProductSerializer, includes: [:taggings], links: links, status: :ok 

Aber nachdem ich hinzufügen, dass, ich bin immer noch die gleiche Warnung aus dem Einschuss gem bekommen. Wie sieht das aus?

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' 

Hat jemand eine Idee, warum die Taggingtabelle nicht eifrig geladen wird.

Antwort

4

Sie müssen Markierungen in Ihrer Abfrage enthalten zuerst, dann der Serializer in der Lage, die geladenen Datensätze statt separat zu fragen für die Markierungen Verein Datensatz für Datensatz

@products = Product.includes(:taggings) 
render json: @products, each_serializer: ::V1::ProductSerializer, includes: [:taggings], links: links, status: :ok 
zu lesen
Verwandte Themen