0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Rails]タグ一覧での投稿数が多い順に並べる

Posted at

はじめに

タグ一覧の作成順?の表示が使いにくいと感じ、
初心者(300)←()の中身が多い順に表示して少ないものは表示させないようにできたので投稿します。

多く投稿されているランキング方式に少しだけ(本当に少し)工夫が必要だったので、
とても簡単ですがよろしくお願いします!

⚠タグ機能は実装している前提です.
⚠もし投稿数が多い順で表示されなかったら、自分の環境ではPostモデルにdefault_scopeで最新順にしているからかもしれません。

こちらの記事を参考に実装しました!

Railsでお手軽ランキング機能

実装後に気が付きましたが、めちゃくちゃわかりやすい記事が存在してました!!↓↓
【Rails】いいね順・投稿数順など ◯◯順の考え方・方法

環境

Rails: 6.1.5
Ruby: 2.6.3

結論

posts_controller.rb
class Public::PostsController < ApplicationController

 def index
  @tags_list = Tag.find(PostTag.group(:tag_id).order('count(post_id) desc').limit(7).pluck(:tag_id))
    # 省略
 end
end

軽く解説

いいねランキングとの変更ポイントとしては、
参照モデルとgroup(:tag_id)など中身の部分です。

posts_controller.rb
# Tagは中間テーブルを使用しているため、外部キー(tag_idとpost_id)を持つPostTagから
Tag.find(PostTag
# :tag_idを基準に
group(:tag_id)
# post_id(投稿数)がdesc(多い順)に並べる *ここ:post_idではないので注意
.order('count(post_id) desc')
#上位7件の:tag_idを抜き出す
.limit(7).pluck(:tag_id))

前述したこちらの記事では全てtag_idで実装していたのでそっちでもいいと思います!

最後に

タグのランキングに関する記事があまり見つからなかったので投稿しましたが、逆にとてもわかりやすい記事に出会えました😁

最後まで閲覧いただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?