ユーザーのデータの紐付け、マイページの作成

どうもこんばんは、みきです。

皆さん勉強進んでますか?

私は仕事で疲れたので、まだ夜の8時ですがもう寝たいです。

でもここで寝たらただ仕事しただけの日になっちゃうので、

ヨギボーの上でふんぞりかえりながらアウトプットしていきます笑

 

ではスタート!

 

●ユーザーのデータを紐づける→アソシエーションを定義する

前回ユーザーの情報(ユーザーの名前とかメールアドレスとか)を保存するための

userテーブルは作りました。

今アプリには投稿に関するデータが保存されているtweetsテーブル、

そしてuserテーブルの2つがあります。

しかし、この2つは何も関連性がありません。

Aさんという人がこのアプリケーションを使っていると仮定して。

Aさんのメールアドレスやパスワードは何かわかっていますが、

どれがAさんが投稿したものなのかは分からない状態です。

これはuserに関する情報はuserテーブルに保管されており、

投稿したものはtweetsテーブルに保管されているからですね。

これでは成り立ちませんね。

そこで必要なのがアソシエーション

なんかこの先めちゃくちゃ大事みたいなのでしっかり覚えた方が良さそう。

今回行うアソシエーションを定義する方法は2つ

『has_manyメソッド』と 『belongs_to メソッド』

どちらも三人称単数形ですね。主語がモデルだからですかね?

初見でhowmanyとbelongだと思ってました。値段つけてどうするんや。

 

●has_manyメソッド

has_manyは読んで字の如く、私たくさん持ってるよ!!

このモデルは色んなデータ、カラムを持っているから紐付けてね。って合図。

userモデル視点で考えるとuserは色んなデータをたくさん持ってるよ!ってこと。

1つモデルが何かをたくさん情報を持つときに使うみたいですね。

使い方は

app/model/モデル名.rb  にて

has_many :紐づけるmodel名

 

って感じっぽいですね。

今回はapp/model/user.rb に記載して

has_manu :tweets   と記載。

これでuserモデルの1つのuserが多数のtweetsのデータを持つことができます

1人のユーザーは複数回投稿しますもんね。

 

●belongs_to

〜に属しますよっていうメソッド。

has_manyの逆って考えて良さそう。

このデータが何に属するのか、を紐づけるためのメソッド

なので app/model/データのmodel名.rb  にて

belongs_to :モデル名

今回は app/model/tweet.rb に

belong_to :user

 

これでtweetsの1つの投稿データは必ず1つのuserに属します。

とある1つ投稿を複数のユーザーが投稿することはないですもんね。

 

これでOK!念のためコンソールで確認したいところ。

rails c でコンソールを開いて

① tweet = Tweet.find(1)

② tweet.user

 

で確認しよう!