Récupération efficace des chansons les plus écoutées à l'aide d'ActiveRecord
Dans Ruby on Rails, récupérer les enregistrements les plus populaires en fonction du nombre de modèles associés est un tâche commune. Dans ce cas, nous avons un modèle Song et un modèle Listen où chaque Listen appartient à un Song, et chaque Song peut avoir plusieurs Listens. Pour déterminer les cinq chansons les plus écoutées, nous devons accéder aux informations d'association de manière efficace.
Utilisation des étendues nommées
Les étendues nommées d'ActiveRecord fournissent un puissant moyen d’encapsuler des requêtes complexes. Ils nous permettent de créer des critères de requête réutilisables qui peuvent être facilement invoqués. Pour le scénario donné, nous pouvons définir une portée nommée appelée :top5 dans le modèle Song :
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 most listened-to songs songs = Song.top5
Répartition des requêtes
En invoquant la portée nommée :top5, nous pouvons obtenir une collection des cinq meilleures chansons avec le nombre d'écoutes associé, offrant un moyen concis et efficace d'extraire les données requises.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!