Ho riscontrato un problema con la limitazione del livello di associazioni serializzate all'interno di una risorsa modello attiva.Limitazione delle associazioni Cascata nel serial serial modello attivo
Ad esempio:
Un gioco ha molte squadre che ha molti giocatori
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
Quando ho recuperare il JSON per la squadra, che include tutti i giocatori in un sub-array, se lo desideri.
Quando richiamo il JSON per il gioco, include tutti i team in un sotto array, eccellente, ma anche tutti i giocatori per ogni squadra. Questo è il comportamento previsto, ma è possibile limitare il livello delle associazioni? Il gioco ha solo restituito i team serializzati senza i giocatori?
'object.association (: comments) .loaded?' Questo è esattamente quello che stavo cercando, grazie! Penso che questo metodo sia più pulito della risposta accettata. Dai documenti active_model_serializer si consiglia di includere le associazioni utilizzando un join o include nel controller per evitare le query n + 1. Dove ero stumped era nel serializzatore come determinare se un'associazione è stata caricata o per ometterla. Dai documenti: "cerca di evitare le query n + 1 assicurando che i dati vengano caricati in modo ottimale, ad esempio se stai usando ActiveRecord, potresti voler utilizzare query include o joins come necessario" – Mark
Dove devo chiamare the include_comments? metodo? – Kaspar