0
0

More than 1 year has passed since last update.

マイグレーションファイルを修正する方法

Posted at
  • アプリ制作途中にマイグレーションファイルの修正が必要になった。なんとか修正することができたので忘備録として記事にします。

経緯

  • ログイン機能を実装するためdeviseをインストール
  • 不要な機能をコメントアウトし忘れrails db:migrateを実施。
  • 実施後に不要な機能を削るためマイグレーションファイルの修正に取り掛かる。

まずはマイグレーションファイルの修正について検索し、次のコマンドを実施

ターミナル
rails db:rollback

すると以下の様にエラーが発生

Running via Spring preloader in process 89570
== 20220715104214 AddDeviseToUsers: reverting =================================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

ActiveRecord::IrreversibleMigration
/Users/kuramotokansei/Desktop/sumple_app/db/migrate/20220715104214_add_devise_to_users.rb:49:in `down'
<internal:/Users/kuramotokansei/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:/Users/kuramotokansei/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
-e:1:in `<main>'

Caused by:
ActiveRecord::IrreversibleMigration: ActiveRecord::IrreversibleMigration
/Users/kuramotokansei/Desktop/sumple_app/db/migrate/20220715104214_add_devise_to_users.rb:49:in `down'
<internal:/Users/kuramotokansei/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:/Users/kuramotokansei/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
-e:1:in `<main>'
Tasks: TOP => db:rollback
(See full trace by running task with --trace)

翻訳してみた

標準的なエラー:エラーが起こりました。これ以降の全てのマイグレーションは中止されました。
中止されたマイグレーションファイルの場所
不可逆なActiveRecordの内容
--traceを実行して完全な痕跡を参照してください。

解決方法

どうやら一度rails db:migrateを実行するとrails db:rollbackが実行出来ないActiveRecordがあるらしい。
今回はローカルのみでチーム開発でないこと、とくにデータベースに保存しているデータなどもないことから以下の方法を試した。ただし、前提としてマイグレーションファイル修正済み とする。

rails db:drop  #データベースを削除
        ↓
rails db:create #データベースを作成
        ↓
rails db:migrate  #マイグレーションを実行

マイグレーションが正常に適用されているか確認

rails db:migrate:status

#上記実行結果

Running via Spring preloader in process 90546

database: sumple_app_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20220714065607  Create presents
   up     20220714080540  Create users
   up     20220715104214  Add devise to users

statusupだとデータベースに反映されている状態らしい

とりあえず今回は理解できていないがなんとか突破できた。今後理解を深め修正していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0