Rails 4、设计并添加可确认的用户模型

Rails 4, Devise and adding confirmable to User Model

我正在尝试将密码验证添加到我的应用程序中。我一直按照 Devise Wiki 上的说明进行操作,但是当我尝试迁移时出现以下错误:

== 20150127183211 AddConfirmableToDevise: migrating ===========================
-- add_column(:users, :confirmation_token, :string)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DuplicateColumn: ERROR:  column "confirmation_token" of relation "users" already exists
: ALTER TABLE "users" ADD "confirmation_token" character varying/Users/esteban/Code/rails/ComicBookDB/db/migrate/20150127183211_add_confirmable_to_devise.rb:4:in `up'
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR:  column "confirmation_token" of relation "users" already exists
: ALTER TABLE "users" ADD "confirmation_token" character varying
/Users/esteban/Code/rails/ComicBookDB/db/migrate/20150127183211_add_confirmable_to_devise.rb:4:in `up'
PG::DuplicateColumn: ERROR:  column "confirmation_token" of relation "users" already exists
/Users/esteban/Code/rails/ComicBookDB/db/migrate/20150127183211_add_confirmable_to_devise.rb:4:in `up'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

但是,我没有看到 confirmation_token 反映在 schema.rb 中。也许我应该重置我的数据库?如果是这样,最简单的方法是什么?任何帮助将不胜感激。

这取决于您如何安装当前数据库。

如果您使用 rake db:create/rake db:migrate - 应该有相应字段的迁移(可能 removed/modified,它们不会神奇地出现)。

如果您使用某人的转储设置数据库 - 它解释了字段如何出现在数据库中,而不是模式中。

如果您处于开发模式并且数据库中没有有价值的信息,最简单的方法是从头开始重新创建您的数据库:

rake db:drop:all
rake db:create:all
rake db:migrate

如果您有有价值的信息或您的迁移不完全代表数据库的当前状态(可能您删除了一些迁移或使用团队中的转储来共享信息),请跳过说明中创建字段的步骤,因为你已经有了它们。