プログラミング

【Rails】ユーザー1人の全ての投稿に紐づく「イイね」の合計数を表示する方法

全ての投稿に紐づく「イイね」の合計数を表示
ユウマ
こんにちは、ユウマ(@yuuuma_11)です。

RailsでSNS系の個人アプリを制作している途中で、1つの投稿に結びついているイイねの合計は簡単に表示できたのですが、ユーザー1人の全ての投稿に結びついているイイねの合計を取得し、表示するのには一工夫必要だったのでその方法をご紹介します。

 

1.アソシエーションの定義

この機能を実装するにあたって登場するモデルは、下記の3になります。

  • Userモデル(ユーザー)
  • Postモデル(投稿)
  • Likeモデル(イイね)

 

まずはアソシエーションの定義から。

 

2.users_controller.rbの編集

次に、users_controllerで「User」に結びつく全ての「Post」を取得していきます。

 

最後に「@user_posts」にeach文を使い、1つの投稿に紐づくイイねを、用意した変数に順番に足していきます。

あとはview側で@likes_countを表示してあげれば、イイねの合計数を表示することができます!

 

まとめ

ユーザーの全ての投稿に紐づくいいねの合計数を表示するには、

  1. アソシエーションの定義
  2. 投稿の取得
  3. each文を使い変数に足していく

この3つの作業が必要です。

-プログラミング

Copyright© ユウマのブログ , 2020 All Rights Reserved.