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