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
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
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!