前提・実現したいこと
記事といいね機能を実装した上で記事一覧で自分がいいねした記事にいいねマークをつけたい。
自分がいいねしていない記事も一覧に表示されるようにする。
users | likes | blogs |
---|---|---|
id | id | id |
name | user_id | content |
blog_id | user_id |
このようにテーブルを持っており、ログイン機能でdeviseを使用しております。
select * from likes where user_id = current_user.id(ログインしているユーザーに絞る)
↑これをblogsテーブルにleft joinさせたいです。
実現したい検索結果は以下です。
ログインユーザーIDを1とする場合
content | user_id |
---|---|
記事1 | 1 |
記事2 | |
記事3 | |
記事4 | 1 |
記事5 |
のように取得し、user_idが入っているところにいいねマークをつけるという仕様にしたいと思っています。
該当のソースコード
user.rb class Like < ApplicationRecord has_many :blogs has_many :likes end
like.rb class Like < ApplicationRecord belongs_to :user belongs_to :blog end
blog.rb class Blog < ApplicationRecord belongs_to :user has_many :likes end
試したこと
has_many :like_blog, through: :likes, source: :user
これだと内部結合されてユーザーがいいねした記事しか拾えない。
コントローラー側で
Blog.includes(:likes).where(posts: { id: current_user.id })
としてもユーザーidで絞っているのでそのデータしか抽出されない。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。