ruby-on-rails – Rails教程:SQLite3 :: ConstraintException:UNIQUE约束失败:users.email

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails教程:SQLite3 :: ConstraintException:UNIQUE约束失败:users.email前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在关注rails教程.我在上. 6,我在sqlite3上遇到一个奇怪的错误(为了记录,我使用的是sqlite 1.3.10版本,教程使用的是1.3.9)

运行rake db:migrate时我没有收到错误,但是当我为测试环境运行迁移时,我得到的是:

$bundle exec rake test:models

rake aborted!
ActiveRecord::PendingMigrationError:

Migrations are pending. To resolve this issue,run:

    bin/rake db:migrate RAILS_ENV=test

sample_app/test/test_helper.rb:3:in `<top (required)>'
sample_app/test/models/user_test.rb:1:in `require'
sample_app/test/models/user_test.rb:1:in `<top (required)>'
Tasks: TOP => test:models
(See full trace by running task with --trace)


$bundle exec rake db:migrate RAILS_ENV=test

== 20150628011937 AddIndexToUsersEmail: migrating ===========================
==
    -- add_index(:users,:email,{:unique=>true})
rake aborted!
StandardError: An error has occurred,this and all later migrations canceled:


sqlite3::ConstraintException: UNIQUE constraint Failed: users.email: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email")sample_app/db/migrate/20150628011937_add_index_to_users_email.rb:3:in `change'
C:in `migrate'
ActiveRecord::RecordNotUnique: sqlite3::ConstraintException: UNIQUE constrain
t Failed: users.email: CREATE UNIQUE INDEX "index_users_on_email" ON "users"
("email")
sample_app/db/migrate/20150628011937_add_index_to_users_email.rb:3:in `change'
C:in `migrate'
sqlite3::ConstraintException: UNIQUE constraint Failed: users.email
sample_app/db/migrate/20150628011937_add_index_to_users_email.rb:3:in `change'
C:in `migrate'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

这是我的user.rb模型:

class User < ActiveRecord::Base
  before_save { self.email = email.downcase }
  validates :name,presence: true,length: { maximum: 50 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email,length: { maximum: 255 },format: { with: VALID_EMAIL_REGEX },uniqueness: { case_sensitive: false }
end

这是我最近的迁移

class AddIndexToUsersEmail < ActiveRecord::Migration
    def change
      add_index :users,unique: true
    end
  end

如果相关,我可以发布任何其他文件.在此先感谢您的帮助!

解决方法

问题是我在迁移之前在数据库中使用相同的电子邮件.

db:reset解决了一切

原文链接:https://www.f2er.com/ruby/271049.html

猜你在找的Ruby相关文章