LoginSignup
3
0

More than 5 years have passed since last update.

joinsでテーブルをつなげる際の2種類のやり方【ハッシュ】

Last updated at Posted at 2018-05-13

テーブル構造

中間テーブルを利用して、自分がいいねした、booksを一覧で見れるようにしたい。
テーブル構造は下みたいな感じです。

スクリーンショット 2018-05-13 14.12.52.gif

これで自分がいいねしたbook一覧を取りたいと思った時に、やり方がわからずハマったので、覚書です。

sqlの数を少なくするため、全テーブルを繋げたい

joinsしないままviewの画面とかでeachすると、sqlが大量発行されて操作が重くなります。
なるべく発行はしたくありませんので、joinsします。自分がしたいテーブル合体は以下のようなイメージです。
スクリーンショット 2018-05-13 14.13.49.gif

上のようにしたいと考えて書いてみたのですが。。。。。

繋げ方1

最初自分が書いていたコードはこうでした。

Book.joins(:likes, :user).where(user_id: current_user.id)

みたいな。。。。
ただこうすると、

スクリーンショット 2018-05-13 14.22.39.gif

このように別々に合体します笑

こうなってしまうと、このbookをlikeしたuserという流れで、データを取りに行くことができません。

ではどうすれば良いかというと。。。。。

繋げ方2

Book.joins({:likes => :user}).where(user_id: current_user.id)

このようにjoinsの中にハッシュを書きます。
そうすると、3つのテーブルを全て連結することができます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0