見習いエンジニア(仮)の学び場

未経験からエンジニア転職を目指す男が、プログラミング学習で学んだことを分かりやすくアウトプットするためのブログです。

アソシエーションって何?

アソシエーションは、テーブル同士のデータを関連づける手法のことです。

 

これだけだと分かりにくいと思うので、「Twitter」を例に説明します。

 

Twitterは、複数の「データ」を利用しています。

 

まずは「ユーザー情報」というデータ、続いて「ツイート情報」というデータ、さらには「ツイートに対するコメント」のデータもあります。

 

これらのデータは、各カテゴリーに分けられて、アプリケーションのデータベースというところに綺麗に保管されています。

 

この「ユーザー情報」といったカテゴリーごとに分けられているデータの集まりをテーブルと言います。

 

各テーブルには、モデルというデータの管理人が1人ついています。

 

基本的には、1人のモデルに対して1つのテーブルしか扱うことができないのですが、アソシエーションを使用することで、他のモデルが管理しているテーブルのデータも使用することができます。

 

アソシエーションの記述方法は、各モデル内にhas_manyメソッドか、belings_toメソッドのどちらかを定義します。

 

has_manyメソッドは「1対多」。

例えば、1ユーザーに対する複数の投稿ツイートのような関係を示します。

そして、belongs_toメソッドは「1対1」

1つのツイートから見ると、ユーザーは1人しかいないような関係を表します。

 

このように、そのモデルの役割に応じてアソシエーションを定義してあげることによって、テーブル間のデータのやり取りができるようになり、アプリの機能を充実させることができます。