Railsのjoinsの使い方を現役エンジニアが解説【初心者向け】

初心者向けにRailsのjoinsの使い方について現役エンジニアが解説しています。joinsは複数のテーブルを内部結合するためのメソッドです。内部結合は共通する複数のテーブルを一つにまとめる機能です。モデル名に続けてメソッドを書くことで内部結合させることが出来ます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Railsのjoinsの使い方について解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Railsのjoinsの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

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)

と書くことで結合させることができます。

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

それでは実際に書いてみましょう。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テーブルをくっつけることができているはずです。

以上で解説を終わります。

 

筆者プロフィール

メンター金成さん

フリーランスエンジニア。
Railsの案件を中心に、様々なアプリケーションを開発してます。

使える言語は、ruby python go 。最近はgoにハマってます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。