Rails: Join mit mehreren Bedingungen

8

Ich habe ein einfaches Modell wie

%Vor%

Wenn ich alle Benutzer mit bestimmten Interessen abfragen möchte, ist das ziemlich einfach

%Vor%

Aber wie kann ich nach Benutzern suchen, die mehrere Interessen haben? Natürlich, wenn ich das tue

%Vor%

Ich bekomme immer ein leeres Ergebnis, da nach dem Join keine Zeile gleichzeitig interest.id = an_interest und interest.id = another_interest haben kann.

Gibt es in ActiveRecord eine Möglichkeit, "Ich möchte die Liste der Benutzer, mit denen zwei (bestimmte) Interessen verknüpft sind, anzugeben?"

update (Lösung) das ist die erste funktionierende Version, die ich heraufgebracht habe, ein Lob an Omar Qureshi

%Vor%     
Filippo Diotalevi 21.03.2011, 11:16
quelle

3 Antworten

4

in (?) ist nicht gut - es ist ein OR wie Ausdruck

was Sie tun müssen, ist mehrere Joins longhanded Joins geschrieben haben

%Vor%

Sie müssen möglicherweise die main_join_clause an Ihre Bedürfnisse anpassen.

    
Omar Qureshi 21.03.2011, 12:01
quelle
2

Dadurch werden Benutzer mit mindestens einem der angegebenen Interessen erhalten.

%Vor%

Um Benutzer mit den beiden angegebenen Interessen zu bekommen, würde ich wahrscheinlich so etwas tun:

%Vor%

Nicht erstaunlich effizient, aber es sollte tun, was Sie brauchen?

    
Ant 21.03.2011 11:26
quelle
0

Versuchen Sie IN (?) und ein Array:

%Vor%     
Marcel Jackwerth 21.03.2011 11:44
quelle