Rails カラムの追加/削除
migrationファイルとは
テーブルの作成や変更を管理するファイル
「(作成日時)create(テーブル名).rb」ファイルの名前を確認すること!
モデルとテーブルの繋がりは「モデル名」で決まる
情報は、テーブルに保存され、テーブルに保存された情報を引き出すのは、そのテーブルに対応するモデルである。
モデルの命名規則
種類 | 概要 | 名前例 |
---|---|---|
モデル名 | 単数形、先頭は英大文字 | List |
モデルのファイル名 | 単数形、先頭は英小文字 | list.rb |
テーブル名 | 複数形、先頭は英小文字 | lists |
migrationファイルの作成
migrationファイルはモデルを作成した際に自動生成されているので、あとは編集するだけ!
自動生成されたmigrationファイルに、テーブルの内容を書いていく!
create_tableメソッドを「do」から「end」内に記述することで、カラムを定義できる。
def change
create_table :テーブル名 do |t|
t.データ型 :カラム名
end
end
migrationファイルをデータベースへ反映し、テーブルを作成
rails db:migrate
schemaファイルを確認
マイグレーションファイルを反映しテーブルを作成すると、db/schema.rbというファイルが作成される。
どのようなカラムが作られていて、どのようなカラムが存在しないのかが一目でわかるため、schemaファイルを見る癖をつけておくこと。
カラムの追加/削除
カラムの追加コマンド
rails g migration Addカラム名Toテーブル名 カラム名:型名
カラムの削除コマンド
rails g migration Removeカラム名Fromテーブル名 カラム名:型名
リセットとロールバック
rails db:migrate:status
赤枠のようにマイグレーションファイルの一覧が出てくればOK。
緑枠はマイグレーションファイルのステータスを表示している。
upとdown
マイグレーションファイルのステータスにはupとdownという2つの状態が存在する。
upとはマイグレーションファイルがmigrateされている状態
反対にdownはmigrateされていない状態を指す。
リセット
rails db:migrate:reset
一度すべてのマイグレーションファイルをdownにして、再度すべてのマイグレーションファイルをmigrateする。
downにするとき、テーブルは一度削除されてしまうため、テーブル内のデータが消えてしまうことに注意が必要!!
👇
db/schema.rbにauthorカラムが追加されているか確認
resetコマンドは以下のような状況で使うと便利。
- 複数のマイグレーションファイルに修正が必要
- テーブルをすべて削除し、データをリセットしたい
ロールバック
rails db:rollbackコマンドは、一番最後にmigrateしたマイグレーションファイルをupからdownの状態にする。
直前のマイグレーションファイルのみを再度migrateしたいときに便利
rails db:rollback
👇
rails db:migrate:status
一番下のマイグレーションファイルのステータスがdownになっていればOK!
db/schema.rbがauthorカラムが追加されているかも確認
何か変更をデータベースに反映したい場合は、ステータスがdownになっているマイグレーションファイルを編集するとよい!
以下のコマンドを入力してステータスをdownからupにしておく。
rails db:migrate
rollbackコマンドはSTEPを指定することで、複数のマイグレーションファイルをdownの状態にできる
rails db:rollback STEP=3
これでこれまでに作成した3つのマイグレーションファイルがすべてdownになる。
昨日は生理前で体調悪すぎてめちゃ早く寝ちゃって
全然進んでないので今日死ぬ気でやる><
Discussion