Bagaimana untuk Mencari Rekod N Paling Berkaitan Teratas dalam Rails 3 menggunakan has_many?

DDD
Lepaskan: 2024-11-28 04:54:11
asal
817 orang telah melayarinya

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

Memesan Rekod mengikut Kiraan Persatuan dalam Rails 3 ActiveRecord

Dalam Rails 3, anda boleh menggunakan has_many persatuan untuk menentukan rekod paling popular dengan berkesan berdasarkan kiraan persatuan. Pertimbangkan contoh model Lagu dengan model Dengar yang berkaitan, di mana setiap Dengar tergolong dalam Lagu.

Untuk mendapatkan 5 teratas lagu yang paling banyak didengar, anda boleh menentukan skop dalam model Lagu menggunakan skop bernama:

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
Salin selepas log masuk

Skop ini menggabungkan kuasa skop dan persatuan yang dinamakan. Ia mengira kiraan mendengar untuk setiap lagu, mengisih keputusan dalam tertib menurun berdasarkan kiraan itu dan mengehadkan keputusan yang ditetapkan kepada 5 lagu teratas yang paling banyak didengar.

Dengan memanfaatkan skop 5 teratas, anda boleh mendapatkan dengan mudah lagu paling popular menggunakan pertanyaan mudah:

Song.top5 # top 5 most listened songs
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencari Rekod N Paling Berkaitan Teratas dalam Rails 3 menggunakan has_many?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan