こんにちは。YamaC / ヤマシー です。今回は、Railsアプリデータベースのテーブルを追加したり、名前を変更したりする方法を備忘録として残しておきます。
マイグレーションファイルを作る
Railsのマイグレーションファイルを生成するには、以下のコマンドを実行します。今回は、’kakeibo’ テーブルに ‘payment_flag’ を追加した時の備忘録として例を記載していきます。
docker execでコンテナの中に入る
毎回忘れるので、めちゃくちゃ基礎・前提から書いていきます。一番最初は、docker execコマンドで、実行中のコンテナの中に入ります。
docker exec -it <コンテナ名またはコンテナID> bash
(-itの意味はよくわかってないですが、これで入れます)
マイグレーションのコマンドを実行
以下のようなコマンドを入力して、マイグレーション用のファイルを生成します。
rails generate migration add_column
すると、db / migrate のなかに、20240518XXXXXX_add_column.rbみたいな、マイグレーション用のファイルが出来上がります。
マイグレーションファイルの中身を編集
作成されたマイグレーションファイルを開いて、中身を編集します。今回は、kakeiboテーブルの中に、payment_flagのカラムを追加したい(Integerで、nullはfalse)ので、下記のように編集しました。
class AddColumn < ActiveRecord::Migration[7.0]
def change
add_column :kakeibo, :payment_flag, :integer, null: false
end
end
マイグレーションを実行
以下のコマンドを打ってマイグレーションを実行します。
rails db:migrate
これで、kakeiboテーブルにpayment_flag
カラムが追加されます。
補足(戻したい時・マイグレーションファイルについて)
例えばマイグレーションをした後に、名前を間違えてしまった!とか、やっぱり無かったことにしたい!なんて場合は、ロールバックができるので、以下のようなコマンドを実行します。
rails db:rollback
これで、直前に行ったマイグレーションがなかったことになるので、直前まで編集していたマイグレーションファイルを編集し直し、もう一度rails db:migrate
をしましょう。
まとめ
今回は、DockerとRailsの環境でデータベーステーブルに新しいカラムを追加する方法を、簡単に、基礎から紹介しました。定期的に忘れて、どうだったけ・・・・となってしまうので、備忘録として残しましたが、誰かのお役に立てば幸いです。
それでは。