Auparavant, j'avais implémenté la fonction de classement en me référant à cet article de Qiita ( Fonction de classement facile dans Rails ). était. J'ai pu l'implémenter avec succès, mais j'ai rencontré les problèmes suivants.
@posts = Post.find(Like.group(:post_id).order('count(post_id) desc').pluck(:post_id)).page(params[:page])
Lorsqu'il est combiné avec la méthode de page de kaminari, ce sera comme ci-dessus, mais cela provoquera l'erreur suivante.
Par conséquent, nous allons introduire la fonction de classement qui peut être combinée avec la méthode de page sans aucun problème.
--Le nom de table de l'article est posts ――Le nom de table des likes est likes
@posts = Post.joins(:likes).group(:post_id).order('count(post_id) desc')
C'est acceptable! Je vais expliquer un par un.
Post.joins(:likes) #Inner rejoindre les postes et aime les tables
group(:post_id) #post_Divisez les groupes en ceux qui ont le même identifiant
order('count(post_id) desc') #Publiez-le_Trier par ordre décroissant d'ID
Ceci termine la fonction de classement. Comme indiqué ci-dessous, l'ajout de la méthode de page à la fin du code ne provoque pas d'erreur et je pense que la fonction de nation de page fonctionne.
@posts = Post.joins(:likes).group(:post_id).order('count(post_id) desc').page(params[:page])
--Fonction de classement facile avec Rails
https://qiita.com/mitsumitsu1128/items/18fa5e49a27e727f00b4
Recommended Posts