railsでマイグレーションファイルを戻す方法
スペルミスをしまった時によく使います。
例えばtitleカラムを、titeとスペルミスしました。
そしてすでにマイグレーションファイルはデータベースに反映されてしまっています。このような時にリカバリーする方法です。
マイグレーションファイルがデータベースに適応されている為、修正が出来ない状態になっています。
一度データベース側から「マイグレーションファイルの戻す」必要があり、そのためのコマンドがrails db:rollback(ロールバック)を使います。
rails db:rollback コマンド
マイグレーションファイルを戻すためのコマンドです。ロールバック→修正→マイグレートで修復が可能になります。
rails db:rollback
rails db:migrate:status コマンド
マイグレーションファイルがデータベースに適用されているかどうかを調べるコマンドです。適用されているときはupと表示されるため、修正するためにはロールバックする必要があります。適用されていないときは、downと表示され、そのまま修正や削除が可能です。
rails db:migrate:status
手順
これらを踏まえて進めていきます。
<ターミナル>
rails db:rollback
rails db:rollbackコマンドを実行します。そのあと実行したロールバックが反映
されているか確認をします。
<ターミナル>
rails db:migrate:status
こちらのコマンドで確認をします。すると以下のようにdownに表示が変わったことがわかります。
これでマイグレーションファイルを修正することができます。
<ターミナル>
Status Migration ID Migration Name
--------------------------------------------------
down 20200919022451 Create calories
これでマイグレーションファイルの修正が可能になりました。該当のマイグレーションファイルを修正をしましょう。
class CreatePosts < ActiveRecord::Migration[5.2]
def change
create_table :posts do |t|
t.text :title #ここを修正しました。 titles → title
t.text :content
t.timestamps
end
end
end
修正が終わったら、マイグレーションファイルを実行します。
マイグレーションファイル実行
rails db:migrate
これにてファイルが修正されたのが反映されます。