🗑️

consoleでデータベース情報を削除する

2023/12/22に公開

はじめに

サンプルデータを作りすぎた。ごちゃごちゃしてるから減らしたい。ここからここのデータだけ、条件を指定して削除したい。そんなときに使える方法。

railsのconsoleでデータベースを削除

先日メンターさんがちょこちょこっとリモートでターミナル操作しているのを見て、そういう使い方もあったのかと新たな気づきがあったのでZennで初の投稿をしてみることに。

前提

・Ruby-3.1.2
・Rails 6.1.7.6
・OS: Windows 10
・開発環境: Cloud9

やってみよう

ターミナルで以下のコマンドを実行し、コンソール起動
$ rails c

rails cの c はconsoleの略。
このコマンドは削除だけでなく、サーバーのデータ変更やアプリケーションに定義したメソッドを試す時にも使える。

特定のデータを消したい

まずモデルの中でこのデータだけ消したいというときにはidを指定しdestroyを使って削除する。例えばOrderモデルで指定したidのデータを削除する場合には以下のようになる。

console
モデル名.find(id).destroy
Order.find(id).destroy

条件を指定して削除したい

今度はここからここまでのデータを消したいという条件付きで行いたい場合。その消したい範囲を指定してあげれば希望の条件で削除可能。例えばOrderモデルの中でid1..10までのものを消したいのであれば以下のようになる。

console
Order.where(id:1..10).destroy_all

データをすべて消したい

さらにそのモデルのデータぜんぶ消したい!というときにはdestroy_allを使って消すことができる。

console
Order.find(id).destroy_all

💡削除できたか確認したい、コンソール抜け出したいってときは

上記それぞれ実行した後、本当に削除できたか確認したいときにはモデル名.allとコンソールに打てば現状データベースがもっているそのモデル内にあるデータ一覧を出してくれる。
またやりたいことが終わってコンソールから抜け出したいときはexitと打ち込んでEnterを押すとコンソールが終了し、いつものターミナルの状態に戻る。

余談

◆ db:resetやdb:migrate:resetという手も

これらはコンソールで行うものではないが、以下2つのコマンドでもデータベースの削除は可能。

terminal
$ rails db:reset
$ rails db:migrate:reset

rails db:resetではマイグレーションファイルを編集しても内容は反映されずマイグレーションも実行しないが、rails db:migrate:resetの場合はデータベースをDropした後、通常通りのdb:migrateが実行される。

この辺まだいまいちつかめていないので、またまとめれたらいいな。


最後まで読んでいただきありがとうございました。

当方プログラミング学習始めてもうすぐ2カ月の初学者です。
プラスの情報や修正点等ありましたら、ご連絡いただけますと幸いです。

Discussion