Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memesan Keputusan ActiveRecord mengikut Kiraan Persatuan dalam Rails 3?
Dalam Rails 3, anda boleh menghadapi senario di mana anda perlu mendapatkan semula data daripada model dan mengisih keputusan berdasarkan bilangan rekod yang berkaitan dalam model lain. Ini boleh dicapai menggunakan skop bernama ActiveRecord.
Pertimbangkan contoh Lagu model yang mempunyai banyak rekod Dengar yang berkaitan. Untuk mencari lima lagu yang paling banyak didengar, anda boleh menggunakan pendekatan skop yang dinamakan:
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) # Retrieve the top 5 songs based on listen count Song.top5
Dalam skop bernama ini, kami menggunakan kaedah pilih untuk memasukkan lajur yang diminati bersama-sama dengan adat lajur listens_count yang mewakili kiraan dengar. Kaedah gabungan mewujudkan perkaitan antara model Lagu dan Dengar. Kaedah kumpulan mengumpulkan hasil mengikut Song.id untuk mengagregat kiraan mendengar bagi setiap lagu. Akhir sekali, susunan dan kaedah had mengisih hasil dalam tertib menurun bagi kiraan dengar dan hadkan output kepada lima lagu teratas.
Atas ialah kandungan terperinci Bagaimana untuk Memesan Keputusan ActiveRecord mengikut Kiraan Persatuan dalam Rails 3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!