Railsのjoinsの使い方を現役エンジニアが解説【初心者向け】
初心者向けにRailsのjoinsの使い方について現役エンジニアが解説しています。joinsは複数のテーブルを内部結合するためのメソッドです。内部結合は共通する複数のテーブルを一つにまとめる機能です。モデル名に続けてメソッドを書くことで内部結合させることが出来ます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Railsのjoinsの使い方について解説します。
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。
![](https://techacademy-magazine-cdn.techacademy.jp/magazine/wp-content/uploads/2018/02/20163020-2-400x400-e1517449291396.png)
今回は、Rubyに関する内容だね!
![](https://techacademy-magazine-cdn.techacademy.jp/magazine/wp-content/uploads/2018/02/20160620-400x400-e1517449269611.png)
どういう内容でしょうか?
![](https://techacademy-magazine-cdn.techacademy.jp/magazine/wp-content/uploads/2018/02/20163020-2-400x400-e1517449291396.png)
Railsのjoinsの使い方について詳しく説明していくね!
![](https://techacademy-magazine-cdn.techacademy.jp/magazine/wp-content/uploads/2018/02/20160620-400x400-e1517449269611.png)
お願いします!
joinsとは
joinsは複数のテーブルを内部結合するためのメソッドです。内部結合とは、複数のテーブルにまたがるレコードを条件の一致するものだけくっつけることを指します。
例えば、以下のようなpostとuserのテーブルがあるとします。
Userテーブル
id | name |
---|---|
1 | 佐藤 |
2 | 鈴木 |
Postテーブル
id | content | user_id |
---|---|---|
1 | 散歩に出かけました | 1 |
2 | 海で泳いだ | 1 |
3 | 釣りをした | 2 |
joinsを使用すると、userテーブルとpostテーブルをuserのidとpostのuser_idを基準にくっつけることができ、以下のようなテーブルを得られます。
これによって、複雑なデータの呼び出しや検索が可能になります。
id | content | user_id | name |
---|---|---|---|
1 | 散歩に出かけました | 1 | 佐藤 |
2 | 海で泳いだ | 1 | 佐藤 |
3 | 釣りをした | 2 | 鈴木 |
joinsの使い方
joinsは以下のように使用します。
モデル.joins(条件)
条件には、”:モデル名”を使うことで結合させることができます。カンマで続けて記載することで、複数のテーブルを結合させることも可能です。
先ほどのuserテーブル、postテーブルを結合させる場合には
User.joins(:posts)
と書くことで結合させることができます。
実際に書いてみよう
それでは実際に書いてみましょう。joinsを使用するした下準備に、以下のコマンドでモデルを用意します。
rails g model User name:string rails g model Post content:string references:user
マイグレーションファイルに間違いがなければ、以下を実行します。
rails db:migrate
また、user.rbでhas_manyでpostを持つようにします。
has_many :posts
これで準備は完了です。postとuserテーブルに適当な値を流しRailsのコンソールで以下のコマンドを実行しましょう。
User.joins(:posts)
user_idを基準に、userテーブルとpostテーブルをくっつけることができているはずです。
以上で解説を終わります。
筆者プロフィール
メンター金成さん
フリーランスエンジニア。 使える言語は、ruby python go 。最近はgoにハマってます。 |
![](https://techacademy-magazine-cdn.techacademy.jp/magazine/wp-content/uploads/2018/02/20160620-400x400-e1517449269611.png)
内容分かりやすくて良かったです!
![](https://techacademy-magazine-cdn.techacademy.jp/magazine/wp-content/uploads/2018/02/20163020-2-400x400-e1517449291396.png)
ゆかりちゃんも分からないことがあったら質問してね!
![](https://techacademy-magazine-cdn.techacademy.jp/magazine/wp-content/uploads/2018/02/20160620-400x400-e1517449269611.png)
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。