Qiita初投稿です。
Rails-Tutorial 13章について自身のアウトプットと自分のつまづいたところの共有もかねて投稿してみました。
Micropostの作成
$ rails generate model Micropost content:text user:references
$ rails generate modelはmodelとmigrationとtestを作成するコマンドでした。
そこにcontent:textを加えることによってText型のcontent属性を付与します。Text型は255文字までしか格納できないString型と違ってさらに長い文字列を扱えます。Text型は長い文字列を扱えるためパフォーマンスに影響するようですが今は考えなくても良いレベルの話かと思います。

さらにuser:referencesによりuser_id属性が付与されユーザーと1対1の関係であることを表すbelongs_to :userがapp/models/micropost.rbに追加されます。
Micropostモデルのマイグレーションファイルでもt.timestampsという行 (マジックカラム) が自動的に生成されています。これによりcreated_atとupdated_atというカラムが追加されます。
よってmicropostsのデータモデルは以下のようになります。
UserとMicropostの関連付け
ここで一つのマイクロポストは一人のユーザーと関係性を持つべきであり、一人のユーザーは複数のマイクロポストとの関係性を持つべきです。
Twitterで例えると、一つのツイートのツイート主が複数人だったらおかしいですし、ツイート主が1つしかつぶやきができなかったらとんでもない欠陥を抱えているのは言うまでもないでしょう。
このことをそれぞれ
MicropostとそのUserは belongs_to (1対1) の関係性があるUserとそのMicropostは has_many (1対多) の関係性がある
と表現します。
この関連付けを行うことにより

ではなく

を利用してマイクロポストを作成できるようになります。
つまり親モデルに属する子モデルのインスタンスを作成したい場合はnewではなくbuildを用います。
なおbuildメソッドはnewメソッドと同様にオブジェクトを返しますがデータベースには反映されないメソッドです。
そのほかにもmicropost.userだったらマイクロポストに紐づいたユーザーオブジェクトを返します。なおマイクロポストとユーザーは1対1の関係なのでどちらも単数系を用います。
user.microposts.find_by(id: 1)ユーザーに紐づいてidが1のマイクロポストを検索しますが、こちらは1対多の関係なのでマイクロポストは複数形です。user.microposts.createやuser.microposts.buildも同様の理由です。
なお、belongs_toとhas_manyは以下のように記述します。
dependent: :destroy
このようにマクロポストとユーザーを関連付けることができましたが、もしユーザが削除されても、ユーザーに関連するマイクロポストは自動では削除されません。
そのためにdependent: :destroyと言うオプションを用います。
こうすることでユーザーが削除されてもマイクロポストだけが残ってしまうと言う問題を解消できます。
最後に
ということでMicropostの作成とUserとの関連付けについてRails-Tutorialの受け売りですがまとめさせていただきました。
チュートリアルを自分で勉強していてわからなかったことやつまづいた点などを急に補足したりしたのでまとまっていない点などがあり少し見づらい点もあったかと思いますが参考になれば幸いです。
また間違っている点やミスリードを誘うような表現がございましたら教えていただきたいです。
