【144日目】【1日20分のRailsチュートリアル】【第11章】Micropostモデルを生成する
今日は「第11章 ユーザーのマイクロポスト」から。ようやく第11章…!
第11章 ユーザーのマイクロポスト
全ての準備が整った今、ユーザーが短いメッセージを投稿できるようにするためのリソース「マイクロポスト」を追加していきます。
Twitterみたいなアプリケーションにするそう。
11.1 Micropostモデル
Git をバージョン管理に使っている場合は、いつものようにトピックブランチを作成しておきましょう。
作成しておきましょう。
$ git checkout master $ git checkout -b user-microposts
11.1.1 基本的なモデル
Micropostモデルは、マイクロポストの内容を保存するcontent属性と、特定のユーザーとマイクロポストを関連付けるuser_id属性の2つの属性だけを持ちます。
基本的な属性はこの2つらしい。
図11.1のモデルでは、マイクロポストの投稿にString型ではなくtext型を使っている点に注目してください。
文字列を扱うにも色んな型があるんだな…。
リスト6.1でUserモデルを生成したときと同様に、Railsのgenerate modelコマンドを使ってMicropostモデルを生成してみます。
Micropostモデルを生成してみました。
$ rails generate model Micropost content:text user:references invoke active_record create db/migrate/20170525023044_create_microposts.rb create app/models/micropost.rb invoke test_unit create test/models/micropost_test.rb create test/fixtures/microposts.yml
このgenerateコマンドはmicropostsテーブルを作成するためのマイグレーションファイルを生成します。
マイグレーションファイル生成されてますね。
user_idとcreated_at両方のカラムを1つの配列に含めることで、Active Recordで両方のキーを同時に使用する複合キーインデックスを作成できます。
うーん、データベースから検索しやすくするため、って感じかな。。。たぶん
下記をマイグレーションファイルに追加することでuser_idとcreated_atカラムにインデックスが付与できる?っぽい。
db/migrate/[timestamp]_create_microposts.rb
add_index :microposts, [:user_id, :created_at]
マイグレーションしてデータベースを更新。
$ bundle exec rake db:migrate
:
-- create_table(:microposts)
-- add_index(:microposts, [:user_id, :created_at])
:
今日の学習時間は【23分】。
次は「11.1.2 Micropostのバリデーション」から。