Wie kann ich Datensätze nach "count" der Assoziation mit Rails und Mongoid finden?

8

Mit diesen Modellen:

%Vor%

Ich möchte etwas wie:

machen %Vor%

Um nur Wochen zu finden, die mehrere Beweise haben.

Es gibt eine Antwort, die das zu beantworten scheint:

Can rails scopes filtert die Anzahl der zugeordneten Klassen für ein bestimmtes Feld

Aber in diesem Beispiel gibt es kein Attribut wie proof_ids in Week, da die IDs mit den Proofs gespeichert werden. Dies funktioniert nicht zum Beispiel:

%Vor%

Wie ist diese Abfrage möglich? Konzeptionell einfach, aber ich kann nicht herausfinden, wie man das mit Mongo oder Mongoid macht.

Ebenso würde ich gerne nach der Anzahl der Beweise suchen, zum Beispiel:

%Vor%

Aber das funktioniert auch nicht.

Ich weiß, dass ein Counter-Cache eine Option für meine beiden spezifischen Fragen ist, aber ich würde auch gerne die Abfrage durchführen können.

Vielen Dank im Voraus für jede Hilfe.

    
eagspoo 22.11.2011, 07:46
quelle

3 Antworten

5

Mit rails (und ohne counter_cache) könnten Sie tun:

%Vor%

Obwohl jede dieser Operationen zwei Abfragen erzeugt, ist dies alles andere als ideal.

Das Paar von Abfragen wird wiederholt (= & gt; 4 Abfragen für jede Operation) mit Bereichen (Fehler?):

%Vor%

Das Ideal ist wahrscheinlich, counter_cache

zu verwenden %Vor%     
Damien 22.11.2011, 16:16
quelle
4

Ich weiß nicht, ob das die beste Lösung ist, da sie es durch ein Array abbildet, aber das macht den Job: (die anderen hier erwähnten Lösungen geben mir Ausnahmen)

%Vor%     
patrick 02.05.2012 21:35
quelle
0

Entschuldige, wenn ich weit weg bin - aber könntest du in der Wochenübersicht einen einfachen counter_cache verwenden? Dann könntest du sowas wie week.proofs_count machen.

    
Adam O'Connor 22.11.2011 08:08
quelle

Tags und Links