0

ich eine Kategorie Modell haben, wird ein Bild Modell und ein User-ModellSortierung in hat viele durch

Category: 
     has_many :images 
     has_many :users, :through=>'images' 


    Image: 
    belongs_to :category, :counter_cache => true 
    belongs_to :user 

    User: 
     has_many :images 


    Category.first.users //returning users but its not ordering ie :order=>' images uploaded by users in that category DESC'. 
    Category.all.collect(&:users) //returning users but its not ordering ie :order=>' images uploaded by users in that category DESC'.. 
  • I Liste der Benutzer für diese Kategorie mit Top-25 Benutzer mit einer maximalen Anzahl von Bildern in dieser Kategorie müssen .
  • Ich brauche Top-25-Benutzer in zwei oder mehr Kategorien etwas wie Top-25-Benutzer in der Kategorie 1 und 2.
+0

Ich denke, es hier eine ähnliche Frage ist: http://stackoverflow.com/questions/ 1760404/order-products-by-association-count –

+0

@BenMiller Nein, das ist für has_many Beziehung, wo Sortierung auf einem Spaltenwert basiert, aber ich muss sortieren basierend auf der Anzahl der Bilder zählt in dieser Kategorie, von diesem Benutzer –

+0

haben Sie versucht Hinzufügen des: Order-Feldes zu den Beziehungen? –

Antwort

0

Versuchen Sie,:

Category.first.images.group(:user_id).count(:user_id, :order=>"count_user_id desc").map {|k,v| k}.first(25) 

Das gibt Ihnen eine geordnete Anordnung von oben 25 Nutzer senden Bilder an die Kategorie.

dies in einer Abfrage alle tun, ich glaube, dass Sie eine kompliziertere wählen tun, müssen (finden von SQL)