Eager zu durchlaufen Eager Laden ist notwendig, da es die Leistung Ihrer Anwendung optimiert und verhindern, dass Ihr System in N + 1 Abfrageproblem ausführen. Angenommen, Sie haben 3000 Firmen in Ihrer Datenbank, dann wird Ihre Datenbank mit 3000 + 1 Anfragen überschwemmt. So in der Steuerung können Sie es erreichen, wie
@companies = Company.includes(:locations)
Ähnliches gilt für einzelne Unternehmen können Sie es tun, wie
@company = Company.includes(:locations).find(params[:id])
Nun werden Stellen mit Spannung geladen und Sie können sie als
holen
@companies.collect{ |company| company.locations }
ODER
@company.locations
Hinweis: Sie können einen beliebigen Iterator verwenden. Ich habe "Collect" nur zum Zwecke der Ausarbeitung verwendet. Danke
Wenn Sie nur ein einziges Unternehmen zu holen und wollen es Orte zu laden, müssen Sie nicht 'includes' verwenden. Das Ausführen von @company = Company.find (params [: id]) 'gefolgt von' @ company.locations' führt genauso viele Abfragen aus wie '@company = Company.includes (: locations) .find (params [: id]) ' –