ho un rapporto padre/figlio nella mia applicazioneRails attivo Record Select padre e figlio come uno risultato
class Polling
has_many :alerts, :dependent => :destroy
class Alert
belongs_to :polling
Sulla mia pagina di indice per le segnalazioni, ho bisogno di mostrare alcuni dati da ciascun genitore, e questo risultino due interrogazioni
Alert Load (6.1ms) SELECT * FROM (SELECT * FROM "ALERTS" INNER JOIN "POLLINGS" ON "POLLINGS"."ID" = "ALERTS"."POLLING_ID" ORDER BY "ALERTS"."ID" DESC) WHERE ROWNUM <= 1
Polling Load (1.8ms) SELECT "POLLINGS".* FROM "POLLINGS" WHERE "POLLINGS"."ID" = 10113 AND ROWNUM <= 1
Ovviamente, questo rende il tempo di caricamento pagina abbastanza assurdo quanto ha un ciclo tra ciascuno e tirare l'oggetto principale pure.
ho provato un paio di cose, come
> Alert.joins(:polling).where(...)
> Alert.includes(:polling).where(...)
> Alert.joins(:polling).select('*').where(...)
E ogni volta ho ottenere due domande distinte quando ho visitare la mia pagina di indice. Uno per ciascun avviso e poi un altro per ottenere i dati principali. Come posso farlo su una riga in modo tale che quando richiamo gli avvisi ricevo anche i relativi dati relativi ai genitori? Non sembra esserci un modo per farlo dall'altra parte perché se faccio un Pollings.where(...)
non cattura i bambini come gruppo.
Sei decisamente sulla strada giusta con il metodo include. L'altro angolo sarebbe provare Polling.includes (: alerts) .where (...). Puoi pubblicare il tuo codice di visualizzazione? – steakchaser
Il fatto è che dobbiamo affrontarlo dal lato bambino, non dal lato genitore. – Oranges13
Non vuoi il precarico? http://apidock.com/rails/ActiveRecord/AssociationPreload/ClassMethods/preload_associations – toxaq