Ordre des enregistrements ActiveRecord par nombre d'associations
Dans Rails 3, vous pouvez facilement accéder et manipuler les données des tables associées à l'aide du framework ActiveRecord. Considérez le scénario dans lequel vous souhaitez récupérer les 5 chansons les plus écoutées à partir d'un modèle nommé Song. Vous disposez d'un modèle distinct appelé Listen qui établit une relation un-à-plusieurs entre les chansons et les écoutes.
Pour obtenir le résultat souhaité, vous pouvez utiliser les associations has_many et appartiennent_to dans vos modèles. Une étendue nommée constitue un moyen pratique de définir des requêtes complexes et de les réutiliser dans l’ensemble de votre application. Voici comment l'implémenter :
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
Dans ce code :
Maintenant, vous pouvez utiliser la méthode top5 pour récupérer facilement les données souhaitées :
Song.top5 # top 5 most listened songs
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!