はじめに
Railsのコマンドから、PostgreSQLにデータベースを作成/削除をして、本当に作成されているか、削除されているか、確認してみる。
環境
Vagrant + Ubuntu 16.04.5 LTS
Rails 5.2.4.2
手順
Railsのプロジェクトファイルを作成する。
$rails new test01 -d postgresql -B
$cd test01
データベースを作成する。
$rails db:create
Created database 'test01_development'
Created database 'test01_test'
データベースの一覧を表示する。
psql -l
確かに、作成されている事が確認できます。一覧は、qキーで閉じる事ができます。
次は、一旦作成したデータベースを削除します。
$ rails db:drop
Dropped database 'test01_development'
Dropped database 'test01_test'
psql -lで確かに、削除された事が確認できます。
再度、データベースを作成して、マイグレーションのバージョンを確認すると、まだ、マイグレーションは1度も実行していないため、バージョンは0で表示される筈です。
$rails db:create
$rails db:version
Current version: 0
適当に、Usersテーブルを作成する。
$rails g model Users name:string
$rails db:migrate
Usersテーブルが確かに作成されている事を確認する。
$psql -q -c 'select * from Users' test01_development
id | name | created_at | updated_at
----+------+------------+------------
(0 rows)
マイグレーションをロールバックすると、先ほど作成したUserテーブルは削除されるため、テーブルを参照するとテーブルは存在しませんと言われ、エラーになります。
<補足>
psqlのcオプションは、SQLコマンドを投げるためのコマンドです。詳しくは、psql --helpでコマンドの詳細が確認できます。
$rails db:rollback
$psql -q -c 'select * from Users' test01_development
ERROR: relation "users" does not exist
LINE 1: select * from Users