Wie man zwei verschiedene Mongoid-Kriterien vereinigt

8

Ich habe die folgenden Bereiche in meinem Modell definiert:

%Vor%

Ich möchte einen anderen Bereich erstellen, der die Ergebnisse beider Bereiche kombiniert, die als current bezeichnet werden. Ich habe so etwas versucht:

%Vor%

Aber das endet damit, dass wir sie beide wie Arrays behandeln und verketten. Das Problem damit ist, dass wenn ich versuche, meinen Bereich mit Model.current aufzurufen, die folgende Fehlermeldung angezeigt wird:

%Vor%

Dies liegt daran, dass das Mongoid Criteria-Objekt in ein Array konvertiert wurde, aber das möchte ich nicht. Ich möchte, dass das Objekt als Objekt der Mongoid-Kriterien bleibt.

Was ich wirklich will, ist die Vereinigung des in_progress-Sets und des kommenden Sets.

Irgendwelche Ideen? Danke.

    
d0nutz1 21.04.2012, 03:51
quelle

2 Antworten

6

Sie können versuchen, Ihre Kriterien mit den Abfragemethoden von Mongoid zu verfassen und in den Selektor der Kriterien zu dereferenzieren, aber ich würde das nicht unbedingt empfehlen - siehe unten für ein Beispiel. Ich stimme der Empfehlung zu, deinen dritten Bereich zu erstellen. Denken Sie daran, dass diese Bereiche db-Abfragen entsprechen, die effizient sein sollen. Daher lohnt es sich wahrscheinlich, die resultierenden und zugrunde liegenden MongoDB-Abfragen zu untersuchen und zu verstehen, die generiert werden.

Modell

%Vor%

Test

%Vor%     
Gary Murakami 23.04.2012 21:07
quelle
2

Sie müssen Ihr Array zurück zu einem Mongoid :: Kriterien zuordnen. Jedes Array von Ihnen kann in ein Kriterium mit any_in übersetzt werden:

%Vor%

Also sollte so etwas funktionieren: (ungetestet)

%Vor%

Ich hoffe, es gibt bessere Lösungen, aber das löst zumindest die Gleichung.

    
patrick 05.05.2012 16:20
quelle