Heim > Datenbank > MySQL-Tutorial > Wie finde ich mit has_many die N am häufigsten verknüpften Datensätze in Rails 3?

Wie finde ich mit has_many die N am häufigsten verknüpften Datensätze in Rails 3?

DDD
Freigeben: 2024-11-28 04:54:11
Original
840 Leute haben es durchsucht

How to Find the Top N Most Associated Records in Rails 3 using has_many?

Sortieren von Datensätzen nach Assoziationsanzahl in Rails 3 ActiveRecord

In Rails 3 können Sie die has_many-Assoziation nutzen, um die beliebtesten Datensätze effektiv zu ermitteln basierend auf Assoziationszahlen. Betrachten Sie das Beispiel eines Song-Modells mit einem zugehörigen Listen-Modell, bei dem jedes Listen zu einem Song gehört.

Um die fünf am häufigsten gehörten Songs abzurufen, können Sie einen Bereich innerhalb des Song-Modells mithilfe benannter Bereiche definieren:

class Song
  has_many :listens
  scope :top5,
    select("songs.id, OTHER_ATTRS_YOU_NEED, count(listens.id) AS listens_count").
    joins(:listens).
    group("songs.id").
    order("listens_count DESC").
    limit(5)
end
Nach dem Login kopieren

Dieser Bereich kombiniert die Leistungsfähigkeit benannter Bereiche und Assoziationen. Es berechnet die Anzahl der gehörten Songs für jedes Lied, sortiert die Ergebnisse in absteigender Reihenfolge basierend auf dieser Anzahl und begrenzt die Ergebnismenge auf die 5 am häufigsten gehörten Songs.

Durch die Nutzung des Top5-Bereichs können Sie die die beliebtesten Songs mit einer einfachen Abfrage:

Song.top5 # top 5 most listened songs
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie finde ich mit has_many die N am häufigsten verknüpften Datensätze in Rails 3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage