【Rails】rails generateコマンドと元に戻す方法
rails generate scaffoldでファイルを作成した後に処理をやり直そうとしたらつまづいたのでまとめ。
エラーが出たときの処理概要
$ rails db:migration
$ rails db:migrate (エラー)
調べてわかったこと
対応策1:マイグレーション前にファイル削除実行
$ rails db:migrate
$ rails db:rollback
対応策3:先に削除したときはデータベースをリセット
$ rails db:migrate
$ rails db:migrate:reset
この場合はデータベースにデータがあったときは消える
エラーが出たときの動き確認
この時にマイグレーションファイルができる
$rails db:migrate
schema.rbが作成したマイグレーションファイルの内容を元に変更され、バージョン番号が最新になる。
作成したファイルが全て消えるが、schema.rbの内容は変わらない
再度同名でファイル作成
$ rails db:migrate
エラー発生:Table “hoges” already exists
データベース内にすでに同名のテーブルが存在
$ rails db:rollback
ロールバック試みたがエラー:No migration with version number
マイグレーションファイルを先に削除しているので見つからない
作成したファイルの状態とデータベースの状態がどうなっているかを意識しながら処理を進めていかないといけないと思った。
今回はscaffoldで試したが、マイグレーションファイルが作成される処理は他にもあるのでその時も注意していきたい。
参考サイト