テーブル構造
中間テーブルを利用して、自分がいいねした、booksを一覧で見れるようにしたい。
テーブル構造は下みたいな感じです。
これで自分がいいねしたbook一覧を取りたいと思った時に、やり方がわからずハマったので、覚書です。
sqlの数を少なくするため、全テーブルを繋げたい
joinsしないままviewの画面とかでeachすると、sqlが大量発行されて操作が重くなります。
なるべく発行はしたくありませんので、joinsします。自分がしたいテーブル合体は以下のようなイメージです。
上のようにしたいと考えて書いてみたのですが。。。。。
繋げ方1
最初自分が書いていたコードはこうでした。
Book.joins(:likes, :user).where(user_id: current_user.id)
みたいな。。。。
ただこうすると、
このように別々に合体します笑
こうなってしまうと、このbookをlikeしたuserという流れで、データを取りに行くことができません。
ではどうすれば良いかというと。。。。。
繋げ方2
Book.joins({:likes => :user}).where(user_id: current_user.id)
このようにjoinsの中にハッシュを書きます。
そうすると、3つのテーブルを全て連結することができます。