Ruby on Rails: DBにテーブルを作る〜テーブルにカラムを作成する...chapter2
DB設計は終わりました。
今回やりたいこと
§ DBにUsersテーブルとTweetsテーブルの作成
§ 作ったテーブルに各カラムを作成
①ModelにUserモデルとTweetモデルを作成
モデルはDBに値をとりに行ったり入れたりするために必要なもの。
$ rails g model User
すると、
invoke active_record
create db/migrate/20200526224538_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
となる。
後で、db/migrate/20200526224538_create_users.rbにカラムや必要情報を追加していきます。
同様にTweetもモデルを作成します。
結果:
invoke active_record
create db/migrate/20200526225124_create_tweets.rb
create app/models/tweet.rb
invoke test_unit
create test/models/tweet_test.rb
create test/fixtures/tweets.yml
上同様、db/migrate/20200526225124_create_tweets.rbにカラム、必要情報を追加します。
②migrateフォルダ内に作成されたファイルの変更
db/migrate/20200526224538_create_users.rb
db/migrate/20200526225124_create_tweets.rb
と変更した。
③$ rails g db:migrate △
調べました。
なぜなら、うろ覚えの私は$rails g ~~migrationってコマンドも覚えていたからです(~~は何か書いてあった気がする....(うろ覚え))。
1.$rails g migration create_△△
これで先ほど作ったdb/migrate/○○_create_△△.rbが作られる(○○は数字が入る)。
つまりこれがマイグレーションファイルっていうものだったんですね。
でも、マイグレーションファイルって結局なんだろってなりました。
DBにカラムを作るものって認識でした。
🔍調べた結果:
マイグレーションファイルとは、Rubyで書かれた テーブルの設計図 のことです。 テーブルの設計図とは カラム や データ型 の定義が書かれた状態のことを指します。
参照:https://diveintocode.jp/blogs/Technology/migration
確かに書いてる。
2.$rails db:migrate
1.は何してるか分かった。
じゃあ、2.って何をしてるの?どんな指令を出してるの???
🔍調べた結果:
マイグレーションファイルを実行し、データベースに反映させるためのコマンドです。
参照:https://pikawaka.com/rails/migration
知らなかった。
これをしないとDBにカラムが追加されない。その前にテーブルもない状態。
というわけで、マイグレーションファイルは変更したので$rails db:migrateをします。
==20200526224538 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0395s
==20200526224538 CreateUsers: migrated (0.0396s) =============================
==20200526225124 CreateTweets: migrating =====================================
-- create_table(:tweets)
-> 0.0553s
==20200526225124 CreateTweets: migrated (0.0554s) ============================
これでSequel Proを見にいくと出来てるぞ!
ちなみにコマンドでマイグレーションファイルがschema_migrationsテーブルに保存できているかを確認する方法。
$rails db:migrate:status
実行結果:
と、upになっていれば保存できてます。
downとなっている場合は保存できてません。
以上です。