Rails: Eager lädt as_json enthält

7
%Vor%

Der obige Code führt zu 1 + N Anfragen an die Datenbank, eine zum Laden von playlist_songs für jeden Song. Die Playlist ist in @playlist vorinstalliert.

Das ist so langsam, wie kann ich optimieren?

    
Johan 28.11.2011, 21:39
quelle

3 Antworten

17

Meine Vermutung: Sie laden die Playlistsongs im Moment nicht gerne. Sie warten derzeit auf den as_json-Aufruf - nach dem alle Songs geladen wurden - und dann muss der Code über jeden Song iterieren und dann die Playlistsongs holen.

Meine Vermutung (das ist völlig ungetestet und kann Bugs enthalten)

%Vor%

AFAICT, das sollte zuerst eifrig alle Lieder und die playlist_songs laden ... und dann als json rendern.

    
Taryn East 05.12.2011, 14:14
quelle
4

Ich würde wärmstens empfehlen, mit einem JSON-Builder wie rabl zu integrieren. Es wird Ihr Leben 10x einfacher machen, vorwärts zu bewegen, und es ist sehr angenehm, die "Ansicht" der JSON-Darstellung zu trennen. Ich habe vor ein paar Monaten den Schalter gewechselt und bin nicht zurückgeblickt.

In Ihrem Controller:

%Vor%

Dann könnte die Rabl-Vorlage etwa so aussehen:

%Vor%     
ejlevin1 10.12.2011 23:57
quelle
1
%Vor%

^ rate

    
Reactormonk 05.12.2011 14:01
quelle

Tags und Links