いいねした投稿を表示させる方法
ポートフォリオにブックマーク機能を追加するにあたり、
どのユーザーがどの投稿をブックマークしたかを表示させるので悩んだので投稿したいと思います。
かなり初学者向けの内容です。
ロジック
以前にいいねした投稿を表示させていたので、それを使い復習したいと思います。
ユーザーの詳細ページで自分がいいねした投稿を表示させる
users_controller.rb
def show
@user = User.find(params[:id])
@like_posts = Post.where(id: @user.favorites.pluck(:post_id))
end
まずuser_idを取得
.rb
@user = User.find(params[:id])
pluckを使う
pluckとは・・指定したカラムのレコードの配列を取得できるメソッド
ドキュメント参照
https://railsdoc.com/page/model_pluck
@userで取得したidのユーザーがいいねした投稿のPost_idをpluckで取得
.rb
@user.favorites.pluck(:post_id)
whereで検索する
pluckで取得したpost_idをPostモデルの中から検索する。
findやfind_byだと1レコードしか返ってこないので注意。
.rb
@like_posts = Post.where(id: @user.favorites.pluck(:post_id))
後は格納した@like_postsを使い、each文等で表示させることができると思います。
最後までご覧いただきありがとうございました!!