【Ruby on Rails】モデルの削除方法
アプリケーションを作成する中で、「必要ないモデルや、モデル名間違って作成してしまった!
モデル名を変更して再作成したい!」
初学者の私は新しくアプリケーションを作成する時はよくあります。
普通に削除したらいいんじゃないの?と一番最初は考えていました。
↑そんな簡単な訳ないやろ(😠)
開発環境
Rails6.1.4
Ruby2.6.3
本題
例. $rails g model homes を作成してしまった!削除したい!
※rails db:migrateをしていない場合は●の方法
※rails db:migrateをしている場合は1.の方法から削除出来ます。
● rails db:migrateをしていない場合
$rails destroy model モデル名
※rails d model モデル名のようにdestroyを省略形では、削除出来ません。
railsdb:migrateをしている場合
- データーベースの中の状態を確認する
このような結果が表示されたら
Status Migration ID Migration Name
--------------------------------------------------
up 20190516135900 Create users
up 20190517140023 Add password digest to users
up 20190607063428 Create homes
※Statusがupのときはモデルを削除してもmigrationには状態が残ったままになるので、のちにrails db:migrateを行なってもエラーが起きてしまう。
- migrationから無くす為に、データーベースの状態を元に戻す
$ rails db:rollback ←一つ前の状態のものに戻す
このような結果が表示される
down 20190607063428 Create homes
※Statusがupになっている状態をdownにすることが出来ます。
モデルを最後に作成したものがdown状態になっています。
また、今回は、モデルと作成して直ぐに削除したい場合を想定して記述しています。
- down状態になったことを確認して削除する
$ rails destroy model モデル名
- モデルが削除されているか確認する
$ rails db:migrate:status
rails db:migrateをする前だったら、1行のコマンドで簡単に削除する事が出来ますが、$rails db:migrate をしてしまうと削除するのにひと手間必要ですね。
お疲れ様でした。
何かを削除するのにも1回1回調べるのが面倒なので、直ぐ開けるノートにコマンドだけまとめて自分専用にストックしておくと、モデル消す時に時間掛けず消せます。←私は忘れやすいので、Boostnoteにストックしてます。
誤った記述がありましたら、ご指摘宜しくお願い致します。
Discussion