目的
投稿をいいねされた順番で表示する。
開発環境
macOS: Big Sur
Rubyバージョン: 2.6.5
Railsバージョン: 6.0.0
前提
- いいね機能が導入されている。
【Rails】いいね機能の実装(非同期)
方法
方法は単純で、全投稿をいいねされた数が多い順
で並びかえることが出来ればOKです!
今回はsort
を使用しました!
app/controllers/posts_controller.rb
def index
#省略
like_posts = Post.includes(:liked_users).sort {|a,b| b.liked_users.length <=> a.liked_users.length}
@like_posts = like_posts.first(3)
end
今回は、いいねされた数が多いTOP3投稿までを表示したかったため、@like_posts = like_posts.first(3)
と記述し、
並び替えた後の最初の3投稿を取得しています。
全投稿表示する場合は、@like_posts = like_posts.first(3)
の記述はいりません。
最後に
並び替えまではスムーズにできましたが、その後の3投稿のみを取得する方法に手間取りました。
探したところ、同じような記事が無かったため誰かの参考になれば幸いです。
では。