Ich habe ein Problem mit der Begrenzung der Ebene der Zuordnungen, die in einer aktiven Modellressource serialisiert sind.Begrenzen der Zuordnungskaskade im aktiven Modell-Serializer
Zum Beispiel:
A Game hat viele Teams, die viele Spieler
class GameSerializer < ActiveModel::Serializer
attributes :id
has_many :teams
end
class TeamSerializer < ActiveModel::Serializer
attributes :id
has_many :players
end
class PlayerSerializer < ActiveModel::Serializer
attributes :id, :name
end
hat Wenn ich die JSON für das Team abrufen, enthält es alle Spieler in einem Sub-Array, wie gewünscht.
Wenn ich die JSON für das Spiel abzurufen, enthält es die Teams alle in einem Subarray, ausgezeichnet, sondern auch alle Spieler für jedes Team. Dies ist das erwartete Verhalten, aber ist es möglich, die Ebene der Assoziationen zu begrenzen? Have Game gibt nur die serialisierten Teams ohne die Spieler zurück?
'object.association (: Kommentare) .loaded?' Das ist genau das, wonach ich gesucht habe, danke! Ich denke, diese Methode ist sauberer als die angenommene Antwort. In der Dokumentation active_model_serializer empfiehlt es sich, Zuordnungen zu berücksichtigen, die entweder einen Join oder Includes im Controller verwenden, um n + 1 Abfragen zu vermeiden. Wo ich ratlos war, war im Serializer, wie man feststellen kann, ob eine Assoziation geladen oder weggelassen wurde. Aus der Dokumentation: „versuchen, n + 1-Abfragen zu vermeiden, indem sie, dass die Datenlasten in optimaler Weise gewährleistet, wenn Sie zB Active verwenden, können Sie Abfrage verwenden enthält oder schließt sich je nach Bedarf“ – Mark
Wo muss ich anrufen die include_comments? Methode? – Kaspar