Wie man Aufzeichnungen erhält, die min has_many rec ords (joins data) haben

8

user.rb

%Vor%

property.rb

%Vor%

Ich möchte einen Benutzer mit minimalen Eigenschaften wie auch für Max bekommen.

Ich kann keine diesbezügliche Abfrage finden

    
Haseeb Ahmad 26.05.2016, 07:50
quelle

3 Antworten

7

Um die Eigenschaften user mit min zu finden, können Sie das einfach tun,

%Vor%

Und um die Eigenschaften user mit max zu finden,

%Vor%

Hinweis: Da dies eine Join-Operation mit properties ist, wird user mit keiner properties in dieser Abfrage nicht angezeigt.

    
M. Karim 08.06.2016, 09:38
quelle
5

Sie könnten counter_cache verwenden.

Die Option :counter_cache kann dazu verwendet werden, die Anzahl der zugehörigen Objekte effizienter zu finden.

Von hier

%Vor%

Erstellen Sie dann die Migration:

%Vor%

Dann können Sie Benutzer holen, die max properties_count

haben %Vor%

Hier ist eine tolle RailsCast über counter_cache

    
retgoat 26.05.2016 09:23
quelle
4

Ich denke, du kannst das mit Scopes machen

%Vor%

Und rufen Sie einfach User.max_properties und User.min_properties

auf

AKTUALISIERT:

Es wird auch funktionieren wie BoraMa suggeted

%Vor%     
Thorin 26.05.2016 09:28
quelle