おーしまブログ

プログラミングやってます

<rails>人気のタグを取り出す方法

こんにちは、おーしまです。

今回は、人気タグを取り出す方法について、書いていきます。

f:id:tomo_bb_aki0118115:20201125000927p:plain

今回はタグですが、データベースの同士で紐づいていれば使うことができます。

原理としては、
中間テーブルのcar_tagsテーブルから、一番多く紐づいているタグを取り出せば良いということです。

@tags = Tag.find(CarTag.group(:tag_id).order('count(tag_id) DESC').limit(3).pluck(:tag_id))

このように取り出します。
まずは、CarTag.group(:tag_id)、で中間テーブルであるcar_tagsテーブルのtag_idが同じものをグループ化してまとめます。
それを、.order('count(tag_id) DESC')、でtag_idが多い順に並べます。これで、一番多いものが先頭に来ます。つまり、ランキングされました。
それを、.limit(3)、で上位3つを取り出します。
.pluck(:tag_id)、でcar_tagsのtags_idのデータだけ取り出します。これで、配列に[1, 4, 6](例)みたいに、上位3つのタグのidを取り出せたので、それをTag.find()、でレコードごと取り出します。



今回はここまでです。
それでは、また

ここはどこ おれはだれ それに近いものがあんだよ 始めようとした奴らも迷い始めてる 怖がらせないでよ そりゃ甘くはないけど まだまだ 夢見ていい世界なんでしょ {UVERwould「ハイ!問題作」}