additive Verkettung mit named_scope

9

Gibt es eine Möglichkeit, Scopes additiv zu kombinieren?

Wenn ich die Bereiche habe

%Vor%

und

%Vor%

Ich kann

anrufen %Vor%

und hol dir alle User, die große Haare haben UND Gitarre spielen. Kann ich dies schreiben, um alle Benutzer, die große Haare haben oder Gitarre spielen zu bekommen?

Ich muss hinzufügen, dass ich weiß, dass Sie eine Reihe von Abfragen ausführen und die Ergebnisse zusammenfügen können. Das versuche ich nicht zu tun.

    
Michael Sofaer 12.08.2009, 02:36
quelle

3 Antworten

2

Sie haben also:

%Vor%

User.big_haired.plays_guitar = & gt; Viele Benutzer.

Ich bin mir einer Methode nicht bewusst, um die zwei zusammen zu vermischen. Vielleicht nur die Arrays mischen:

%Vor%     
askegg 12.08.2009 03:10
quelle
2

Versuchen Sie Searchlogic, es vor kurzem unterstützt kombinieren namens Bereiche mit OR

    
user166281 31.08.2009 22:39
quelle
0

Ich habe das gerade an einigen meiner Modelle ausprobiert, die named_scopes definiert haben. Es wird die Bedingungen als UND-Bedingung zusammenbringen, wenn Sie es kombinieren. Also ...

%Vor%

wird dazu führen (offensichtlich meine Kurzschrift SQL, nicht die echten Rails generiert)

%Vor%

Ich kenne keine Möglichkeit, sie als OR-Beziehung zu kombinieren. Das wäre unglaublich komplex, wenn man über die verschiedenen Optionen nachdenkt. Wir chained named_scopes die ganze Zeit, es funktioniert gut (solange Sie sie ANDed ANDed wollen).

Um dies zu tun, würde ich entweder einen speziellen benannten Bereich mit den OR-Bedingungen erstellen oder eine Union verwenden, um einen eindeutigen Satz wie folgt zu erzeugen:

%Vor%     
Jeff Whitmire 12.08.2009 18:38
quelle