Ruby on RailsチュートリアルでUserのデータベースマイグレーション

Pocket

Ruby on Railsチュートリアルで第6章のユーザーのモデルを作成しているとき、rails db:migrateしてもrails testすると、

Migrations are pending. To resolve this issue, run:

        bin/rails db:migrate RAILS_ENV=test

というエラーになります。素直に、RAILS_ENVをつけてテストをすると、テストはパスします。

その後、validationでuniquenessをつけてまたmigrateしようとするとこんどは、migrateできないというエラーになります。

SQLite3::ConstraintException: UNIQUE constraint failed: users.email: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email")

このときは、一度db:rollbackして、db:migrateするとうまくいきます。

test/fixtures/users.ymlを空にしてから、

rails db:rollback RAILS_ENV=test
rails db:migrate RAILS_ENV=test

チュートリアルでは、development環境で実行されているようですが、テストはtest環境で実行されているようで異なっています。

development環境とともにtest環境のデータベースも用意しないといけないようです。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*