よくカラムの追加や削除をするのに、その度にやり方を忘れて毎回いろんな記事を検索してしまってるので、備忘録として記事にしました。
#カラムの追加方法
$ rails g migration Addカラム名To追加先テーブル名 追加するカラム名:型
↓↓↓↓↓↓↓↓(例)
% rails g migration AddPrefectureToItems prefecture:references
書き方はキャメルケースで書きます。「SampleHogeHuga」のように単語の頭文字を大文字にすることで単語を区切ります。
#カラムの消し方
基本的には、
rails g migration Removeカラム名From削除元テーブル名 削除するカラム名:型
を使った方が良いと思います。
しかし、自分の場合、なぜかうまくrails db:migrateが実行できない事が多かったので、直接MySQLテーブルを操作する方法で削除しました。
#SQL文で指定したカラムを消す方法
まず、$ mysql -u root
でmysqlに接続。
$ SHOW DATABASES;
で指定するデータベースを探す。
$ USE データベース名;
でデーターベースを指定する。
$ SHOW TABLES;
でテーブルを探す。
$ ALTER TABLE テーブル名 DROP カラム名;
で指定したカラムを削除。
↓↓↓↓↓↓↓↓(例)
$ ALTER TABLE goods DROP stock;
#間違ったマイグレーションファイルを作ってしまった時の対処法
まずは、マイグレーションファイルの状況確認。
$ bundle exec rake db:migrate:status
左端が「down」になってるファイルは消せますよ〜という意味。
$ rails db:rollback
で一個手前のファイルをダウン状態にできる。
$ rails db:rollback STEP=○
で現在地を含めた○個前までdown状態にできます。(つまり○+1個前のファイルまで実行された状態)
$ rm -rf db/migrate/マイグレーションファイル名
でマイグレーションファイルを削除。
$ bundle exec rake db:migrate:status
で確認。
削除成功!
※本来は最新のマイグレーションから順番に消していく方がいいです。