undefinierte Methode 'includes' für Objektinstanz

9

Ich verwende Ruby 2.2.1 und Rails 4.2, um eine App zu erstellen. Bei einer meiner Ansichten habe ich folgende Nachricht erhalten:

  

N + 1 Abfrage erkannt     Politiker = & gt; [:Konto]     Zu deinem Finder hinzufügen:: includes = & gt; [: Konto]

     

N + 1 Abfragemethoden-Aufrufstapel

     

app / models / user.rb: 19: in 'Konto'

     

app / controllers / home_controller.rb: 6: in 'index'

Hier ist meine Aktion zu Hause Controller:

%Vor%

Und der relevante Abschnitt des Benutzermodells:

%Vor%

Ich habe bereits folgendes versucht:

%Vor%

Aber ich bekomme nur den Fehler:

%Vor%

Ich habe etwas recherchiert und es scheint, dass es nur Arbeiten für Beziehungen beinhaltet (was nicht der Fall ist).

Ist die Kugel umsonst? Was kann ich tun, damit dies keine N + 1-Abfrage ist?

Danke!

    
Igor_Marques 05.06.2015, 19:50
quelle

1 Antwort

4

includes kann nur in ActiveRecord::Relation s oder ActiveRecord::Base untergeordneten Klassen aufgerufen werden, account scheint ein Modell zu sein, reagiert also nicht auf ActiveRecord::Relation Methoden wie includes . Es scheint ein falsches positives Ergebnis von bullet zu sein, sobald du nur ein Konto von current_user bekommst, obwohl ich Delagierungen für Assoziationen nicht empfehle, es kann zu N + 1 Problemen in der Funktion führen.

Ersetzen von Delagate durch AR-Zuordnung:

Unter der Annahme, dass Account ein normales ActiveRecord -Modell ist, können Sie has_one macro verwenden (siehe Dokumentation für weitere Details):

%Vor%

Es ist sehr handvoll, wenn Sie Benutzer durchlaufen müssen:

%Vor%     
Brenno Costa 05.06.2015, 20:22
quelle