Installing Devise: `PG::UndefinedTable: ERROR: relation "users" does not exist`

Installing Devise: `PG::UndefinedTable: ERROR: relation "users" does not exist`

这是我成功安装 Devise 的方法:

现在,当我尝试执行 rails generate devise User 时,出现以下错误:

== 20190915133638 AddDeviseToUsers: migrating =================================
-- change_table(:users)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::UndefinedTable: ERROR:  relation "users" does not exist
: ALTER TABLE "users" ADD "email" character varying DEFAULT '' NOT NULL

我尝试将一些自定义字段添加到设计迁移中,但随后再次使用自动生成的迁移并获得相同的结果。

任何人都可以看到我是如何得到这个错误的吗?我试过 rake db:reset db:create db:migrate 但没用。

尝试 db:drop 而不是 db:reset

你之前有过User模特吗?似乎 devise 也是这么想的,它正试图将其列添加到一个不存在的 User 模型中。

这就是我要做的...

  1. 运行 rails db:drop
  2. 删除 db/schema.rb 个文件。
  3. 删除db/migrate/20190915133638_add_devise_to_users.rb
  4. 运行 rails generate devise:install 再一次
  5. 运行 rails db:migrate

编辑

如果前面的步骤不起作用,请尝试在设计迁移之前创建 users table。

为此,请执行以下步骤:

  1. rails g model User
  2. 更改迁移文件的名称,使其在 AddDeviseToUsers 迁移之前立即执行。
  3. 运行 rails db:migrate