Rails DBに対する命令文3

別に命令文という感じもないのだが注意点

前回の続き。前回も軽く触れたが、マイグレーションファイルを直接いじれるのは一度でもmigrateする前まで。それ以降は処理済み扱いとなり。反映されない。

 https://teratail.com/questions/103227

またrollbackで何でも戻る訳ではない

https://dev.mysql.com/doc/refman/5.6/ja/cannot-roll-back.html

具体例で言えば

change_columnで変更した物はrollbackでは戻らない

(ただしupやdownを使えばなんとかなるよう)

 

ちなみにrollbackで戻るのは1つ前まで STEP ="いくつ戻すか?"をくっつけていっぺんに戻すことは可能

 

dbごとdropすれば最初からやり直せるかもしれんが、それも大胆過ぎる気はするので、一度migrateしてしまった後はコマンドからadd_column等のマイグレーションファイルを作ってサイドmigrateした方が良さそうだ。

 

以下の人が丁寧に説明してくれていたので最後に貼っておく

https://ja.stackoverflow.com/questions/39554/migration%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%82%AB%E3%83%A9%E3%83%A0%E3%82%92%E8%BF%BD%E5%8A%A0-%E5%89%8A%E9%99%A4%E3%81%97%E3%81%A6%E3%82%82schema-rb%E3%81%AB%E5%8F%8D%E6%98%A0%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%8B

gitにしてもmigrationファイルにしてもどんどん更新していくのは簡単だが元に戻すのはめんどくさいもんだ、と思った。gitはコミットID指定するだけで大体戻ってくれるからまだいいけど、rollbackやresetは結構エラー吐きまくる。

実際、美味いことdb:resetできずにハマってしまった。Loardエラーでrails sすら出来なくなったがgem update --systemでなんとか直るという怖い思いをしたのでメモに残しとく

 

 

一般的な作成手順に関してこの説明もわかり易かったのでついでに載せとく

https://pikawaka.com/rails/migration参考元

マイグレーションファイルの作成方法 

 

下記のコマンドによりモデルを作成するとモデルファイルと一緒にマイグレーションファイルが作成されます。

ターミナル
1
$ rails g model モデル名

作成されたマイグレーションファイルはdb/migrateフォルダ内に入っています。

この最初に作成されたマイグレーションファイルを編集してテーブルを作成するのが一般的です。

その後、作成したテーブルに変更を加えたりするときはすでにあるマイグレーションファイルを編集するのではなく、新たに別のマイグレーションファイルを作成して変更をするコードを記述します。

その際の新しいマイグレーションファイルを作成するコマンドは下記の通りです。

ターミナル
1
$ rails g migration マイグレーション

これをmigrateする前に弄る