Eager lädt einen benutzerdefinierten Join mit einer Instanzvariablen

8

Gegeben ein System, das Benutzern erlaubt, andere Benutzer zu Ereignissen einzuladen:

%Vor%

Ich erstelle einen einfachen Bericht, der alle Einladungen zu einer Veranstaltung anzeigt. Ich versuche, den Bericht so zu ändern, dass er auch einige Aktionen enthält, die für invited für das Beispielereignis durchgeführt werden können:

%Vor%

Das funktioniert gut, hat aber ein N + 1-Problem. Wenn Sie versuchen, die benutzerdefinierte Zuordnung zu laden, erhalten Sie:

  

ABSCHÄTZUNGSHINWEIS: Der Assoziationsbereich 'eingeladen' ist instanzabhängig (der Bereichsbaustein benötigt ein Argument). Das Vorladen findet statt, bevor die einzelnen Instanzen erstellt werden. Dies bedeutet, dass keine Instanz an den Assoziationsbereich übergeben wird. Dies führt höchstwahrscheinlich zu fehlerhaftem oder falschem Verhalten. Joining, Preloading und das eifrige Laden dieser Verknüpfungen ist veraltet und wird in Zukunft entfernt.

Gibt es eine Möglichkeit, so eifrig zu laden? Ist es möglich, dem has_many andere Hinweise zu geben, anstatt eine Instanzvariable zu verwenden?

    
Kevin Sylvestre 02.06.2015, 19:39
quelle

1 Antwort

0

Siehe Rails 5 how to Formularzuordnung zwischen Tabellen für mehrere gemeinsame Attribute .

Sie müssen möglicherweise zwei verschiedene Zuordnungen definieren. Eine Instanz spezifisch und die andere für Joins.

    
s2t2 17.01.2017 01:45
quelle

Tags und Links