スギボー blog

プログラミングの学習を始めました。主にアウトプットの場として活用していきます。その他生きていて感じたこと、学びになったことも発信していきます。

第一回チキチキ!! Ruby on Rails アソシエーション

 アソシエーションとは、テーブル同士の関連付けのこと

 

アソシエーションの定義には has_manyメソッドbelongs_toメソッドを使います

 

has_manyメソッド

TwitterなどのSNSでは1人のユーザー(user)はたくさん投稿(tweet)できるかと思います。

つまり、1人のユーザーは複数の投稿を持っていることになります。

この関連付けをするため、userと他のモデルとの間に「1対多」のつながりがあることを示すのがhas_manyメソッドです。

        

 

 

belongs_toメソッド

1つの投稿は、1人のユーザーが投稿したものです。
つまり1つの投稿を複数人が投稿できないため、投稿は必ず1人のユーザーに所属します。

Tweetモデルと他のモデル(User)との間に「1対1」のつながりがあることを示すのがbelongs_toメソッドです。

        

 

 

もう少し噛み砕いていきます。学校の授業を例にしてみましょう。

例えば先生1人は複数人の生徒に授業を行います。

 

        先生                

      ↙️  ↓  ↘️           

    生徒1 生徒2 生徒3    

 

      1 対 多  

    (先生) (生徒)

先生の視点からはhas_manyの関係になります。

 

 

今度は生徒の視点から見てみましょう。

 

    生徒1 生徒2 生徒3

      ↘️  ↓  ↙️

        先生  

   

      1 対 1 

    (生徒1)(先生)

当然ですが、生徒1は先生の話しか聞いていません。

他の生徒と話していたら怒られてしまいますからね(笑)

よって、生徒視点からはbelongs_toの関係になります。

 

 

今回は以上になります。

何か間違っていたり、アイデアがあれば遠慮なく教えください!