前書き.
rails tutorial2章を2周目として学んでいるのですがデータの関連付けの理解度が1周目より少し増したので、rails tutorial1周目の方向けに記事を残したいと思います。少しでも有益な記事になると幸いです.
目次.
①データの関連付けとは.
②データの関連付けができていないとどうなるのか.
データの関連付けとは.
⇨1言で言うと複数のテーブルの中から欲しい情報を簡単に取得するために行うこと.
例えばTwitterのようなアプリを開発しているとする。
すると以下のようなデータベースになったとする。Userテーブルにはユーザーの名前とemailが入っています。
micropostテーブルには呟いた内容とUserテーブルのuser_idが外部キーとしてあるとする。
この2つのテーブルから「誰がどの投稿をしたかの情報を知りたいとする」
例えばuser_id:1の山形がした投稿(さくらんぼの県だよ、山形は 米も美味しいよ)全てを知りたいとする.
関連付けができている場合のデータの取得方法.
変数(モデルオブジェクト) = モデル名(先頭大文字).first 変数 = モデルオブジェクト.テーブル名(先頭小文字)
↓上の式に当てはめると
user = User.first micropost = user.microposts
としてputs micropostとすると 山形がした全ての投稿も取得できる.ターミナルに出力された情報↓
<Micropost id: 1, content: "さくらんぼの県だよ", user_id: 1, > <Micropost id: 3, content: "山形は 米も美味しいよ", user_id: 1, >
また↓
@microposts = User.first.microposts
と1行で書くことができ モデルオブジェクト.テーブル名 かモデル名.first.テーブル名で関連付けされた情報全て取得すると知っていればパッと見て何をしようとしているかがわかりやすい。
②データの関連付けができていないとどうなるのか.
関連付けができていない場合.
user = User.first microposts = Micropost.where(user_id: user.id)
何しているのかパッと見ただけではわかりにくい.
外部キーを気にしてコードを記述しなければいけない。