【问题标题】:Devise throws and error during migration迁移期间设计抛出和错误
【发布时间】:2014-10-16 10:06:05
【问题描述】:

我正在尝试在我的 rails 应用程序中使用 Devise,但是当我要迁移我的数据库时,Devise 给了我这个错误:


rake db:migrate
== 20141016065244 AddDeviseToPatients: migrating ==============================
-- change_table(:patients)
   -> 0.0127s
-- add_index(:patients, :email, {:unique=>true})
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::ConstraintException: UNIQUE constraint failed: patients.email: CREATE UNIQUE INDEX "index_patients_on_email" ON "patients" ("email")

我正在尝试在“用户”表称为“患者”的已启动项目中使用设计。

这是那张桌子:

"Patient(id: integer, name: string, loginName: string, login: integer, created_at: datetime, updated_at: datetime)"

那么我犯了什么简单的错误? :)

这是迁移文件:https://gist.github.com/macmattias/1c81717dbf218d18dc72

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise


    【解决方案1】:

    字段电子邮件丢失?

    您需要向表患者添加字段电子邮件。

    【讨论】:

    • 是的,我没有,但迁移想添加它。
    • 当然迁移需要一个电子邮件字段,因为电子邮件字段是“登录名”。有一个关于使用其他字段而不是电子邮件的问题:stackoverflow.com/questions/10866667/…
    • 迁移的错误是因为 add_index :patients, :email, unique: true。您不能在不存在的字段上添加索引。
    • 在迁移文件的早期,它会更改我的表并尝试添加电子邮件。我自己添加了它,但列名重复:电子邮件。我已将配置更改为 loginName,因为这是我想要的,但我仍然收到原始错误。
    猜你喜欢
    • 1970-01-01
    • 2013-05-25
    • 2015-04-23
    • 2013-05-31
    • 1970-01-01
    • 2016-07-04
    • 2015-03-02
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多