[Ruby on Rails] Affichage du classement (total, valeur moyenne)

Cible

Affichage du classement

Environnement de développement

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

supposition

controller Si vous pouvez le faire avec un contrôleur, vous pouvez le faire!

Classement moyen: application/controllers/users_controller.rb


  def rank
    @users = User.
              find(Post.
                    group(:score).
                    order('avg(score) desc').
                    pluck(:user_id)
                  )
  end

<détails>

Supplément </ summary>

  • @ Users = User.find (): Entrez la valeur obtenue à partir du modèle User dans @user dans les conditions suivantes. -Post.group (: score): Regrouper par colonne de score du modèle Post ・ Order ('avg (score) desc'): Trier par ordre décroissant par score moyen -Pluck (: user_id): Tous ceux avec la valeur ci-dessus user_id sont arrangés.

Classement total: application/controllers/posts_controller.rb


  def rank
    @posts = Post.
              find(Favorite.
                    group(:post_id).
                    order('count(post_id) desc').
                    pluck(:post_id)
                  )
  end

<détails>

Supplément </ summary> ・ @Posts = Post.find (): Entrez la valeur obtenue à partir du modèle Post dans les conditions suivantes dans @post. -Favorite.group (: post_id): Regrouper par colonne post_id du modèle Favorite -Order ('count (post_id) desc'): Trier par ordre décroissant du nombre de post_id -Pluck (: post_id): Arrange tous ceux avec la valeur ci-dessus post_id

view Peut être affiché dans l'ordre décroissant de chacun comme indiqué ci-dessous

python


<% @users.each do |user| %>
<% end %>
<% @posts.each do |user| %>
<% end %>

Lors de l'utilisation de Kaminari

Si vous ajoutez Kaminari.paginate_array () devant et .page (params [: page]) à la fin, c'est OK.

python


@posts = Kaminari.paginate_array(Post.find(Favorite.group(:post_id).order('count(post_id) desc').pluck(:post_id))).page(params[:page])

Site de référence

[Fonction de classement facile avec Rails] (https://qiita.com/mitsumitsu1128/items/18fa5e49a27e727f00b4) [Rails] Implémentation de la fonction de classement

Recommended Posts