👋
migrationファイルを使ってモデルとテーブルを削除する
概要
Ruby on Railsで、不要になったモデルを削除する方法をご紹介します。
削除方法は2つあります。
1つは rails destroy model model_names
コマンドを使う方法ですが、この場合、モデル作成用のmigrationファイルが削除されてしまいます。DBの整合性がとれなくなる危険性があるため、おすすめできません。
もう1つは 削除用のmigrationファイルを作成し、rails db:migrate
を実行する方法です。この場合「モデルを作成した後に削除した」という履歴が残るため安全です。本記事ではこちらの方法について解説します。
削除用のmigrationファイルを生成
ModelNames
という名前のモデルを削除するとします。
以下のコマンドを実行します。
rails g migration DropModelNames
削除用migrationファイル XXXXXXXXXXXXXX_drop_table_model_names.rb
が生成されます。
削除用のmigrationファイルを編集
生成された XXXXXXXXXXXXXX_drop_table_model_names.rb
を以下のように編集します。
class DropModelNames < ActiveRecord::Migration[7.0]
def change
drop_table :model_names do |t|
t.string "name", default: "", null: false # ModelNamesの現在のカラム
t.datetime "created_at", null: false # ModelNamesの現在のカラム
t.datetime "updated_at", null: false # ModelNamesの現在のカラム
end
end
end
現時点のModelNamesのカラムについて記述することで、rollback
が可能になります。
rails db:migrate を実行
以下のコマンドを実行します。
rails db:migrate
DBからModelNames
テーブルが削除されます。
ただし、以下の関連ファイルは手動で削除する必要があります。
関連ファイルを手動で削除
app\models\corporate_member.rb
test\fixtures\corporate_users.yml
test\models\corporate_user_test.rb
これで完了です!
Discussion