Viele-zu-viele-Verknüpfungen mit mehreren Self-Joins in ActiveRecord

8

Ich versuche, mehrere Beziehungen zwischen Datensätzen des gleichen Modells über Self-Joins zu implementieren (basierend auf @ Shtééf Antwort ). Ich habe folgende Modelle

%Vor%

Mit diesem Setup kann ich erfolgreich auf die Listen der Untergebenen und Manager für jeden Datensatz zugreifen. Ich habe jedoch Schwierigkeiten, Beziehungen auf folgende Weise zu erstellen:

%Vor%

Das Problem ist, dass es keine Art von Beziehungen einstellt, also muss ich

schreiben %Vor%

Mache ich etwas falsch?

    
Andrei 14.06.2011, 22:51
quelle

4 Antworten

8

Sie können before_add und before_remove callback für die Zuordnung has_many verwenden:

%Vor%

Das sollte funktionieren und Sie können employe.managers.create
verwenden Möglicherweise möchten Sie build intread von create im Rückruf von
verwenden Sie können auch diese Frage zu dieser Lösung     

Adrien Coquio 25.06.2011, 12:28
quelle
3

Um eine multiple Viele-zu-Viele-Self-Join-Verknüpfung zu erstellen, würde ich empfehlen, dass mehrere Tabellen zum Verwalten der Verbindung sinnvoller sind. Auf diese Weise ist es vom Standpunkt der Daten aus sehr klar, was genau vor sich geht, und es ist auch logisch klar. Also etwas in dieser Richtung:

%Vor%

Auf diese Weise wird es vom Codierungsstandpunkt aus nicht mehr gewunden als nötig, und Sie können mit den Standard-Sammlungen darauf zugreifen und es wird Ihre Verbindungen für Sie richtig einrichten, ohne dass Sie sie verwalten müssen. Also, diese beiden Sammlungen sollten funktionieren ..

%Vor%

Und Sie könnten keine anderen Variablen verwalten müssen. Sinn ergeben? Es fügt eine Tabelle hinzu, verbessert aber die Übersichtlichkeit.

    
Christopher WJ Rueber 21.06.2011 14:07
quelle
2

Ich würde Ihre Modelle wie folgt wiederholen:

%Vor%

Jetzt können Sie Folgendes tun:

%Vor%

Hinweis: Es ist normalerweise ein Anzeichen dafür, dass man das Unternehmen verlässt, wenn sie an zwei Manager berichtet werden: -)

    
Harish Shetty 22.06.2011 05:02
quelle
2

Angesichts der vorgestellten Beziehung

%Vor%

Obwohl die Lösung funktioniert - bin ich ein bisschen verwirrt, indem ich die Assoziationen mit "rel_type" verknüpfe. In diesem Fall - ich würde sagen, der rel_type ist redundant und die Beziehung sollte wie folgt zugeordnet werden:

%Vor%

In einem solchen Fall sollte das Zuordnungsmapping etwas einfacher sein.

    
tamersalama 25.06.2011 06:57
quelle