🤒

Rails カラムの追加/削除

2023/04/10に公開

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