1.はじめに
この記事では既存のテーブルに新たにカラム追加する際に、永遠とマイグレーションファイルが増えてしまう人に向けて、マイグレーションファイルを最小限化方法を解説します。
「いやいや当たり前でしょ。」と思うかもしれませんが、僕も過去にrailsを学び始めて一番最初にぶち当たった壁なので初心者向けに書いています!
2.マイグレーションファイルとは?
マイグレーションファイルは、データベースを生成する際の設計図になるものです。
また、マイグレーションファイルを実行することで、記述した内容に基づいたテーブルが生成されます。
3.ロールバックのやり方
まずはロールバックをする方法をおさらいしましょう。
$ rails db:rollback
複数のファイルをロールバックしたい時は以下のように記述しましょう。
$ rails db:rollback STEP=○
すなわち5つのマイグレーションファイルとrollbackしたいときはSTEP=5となるわけです。
ここまでがロールバックのおさらいです。
4.既存テーブルにカラムの追加方法
tweetsテーブルにtitleというカラムをstring型追加する時、
$ rails g migration AddTitleToTweets title:string
のよう形で書いていませんか?
厳密には正しいですが、このままだとカラムを追加する際にマイグレーションファイルが永遠と増殖してしまいます。
今回の方法は、直接マイグレーションファイルを編集するという方法です。
1.ターミナルでマイグレーションファイルのrollbackを行う。
(※この際、必ずstatusがdownになっていることを確認しましょう!🚨)
今回だと、以下のように追加してください
class CreateTweets < ActiveRecord::Migration[6.1]
def change
create_table :tweets do |t|
t.text :body
t.text :name
t.string :image
t.string :title #追加する行
t.timestamps
end
end
end
その後、ターミナルで以下を打ち込みましょう。
$ rails db:migrate
titleというカラムがstring型で追加されました。
(🚨注意点🚨)
・必ずstatusはオフにしましょう
・マイグレーションファイルを直接書き換えるので、間違いがないか必ず確認しましょう
・rails db:migrateした際にschema.rbをみて更新されているか確認しましょう
まとめ
今回はマイグレーションファイルをスッキリし、簡単にカラムを追加する方法を紹介しました。
追加をメインで行いましたが修正したい場合も同様で
status down → ファイルの修正 → マイグレーション
の流れで一発です!
これでrails 初学者でも気軽に、好きなように開発ができますね🌟
それでは楽しいrails開発の旅を〜!