gpt4 book ai didi

ruby-on-rails - Rake Aborted , on add_index( :users, :email, {:unique=>true})

转载 作者:行者123 更新时间:2023-12-03 15:42:18 24 4
gpt4 key购买 nike

我目前正在编写 michael hartl 的 ruby​​ on rails 3 教程。当我尝试调用 db:migrate 时,我遇到了这个问题。有人可以帮我弄清楚为什么它会中止。谢谢!
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
== AddEmailUniquenessIndex: migrating ========================================
-- add_index(:users, :email, {:unique=>true})
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::ConstraintException: indexed columns are not unique: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email")

代码

class AddEmailUniquenessIndex < ActiveRecord::Migration
def up
add_index :users, :email, :unique => true
end

def down
remove_index :users, :email
end
end

用户代码
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#

class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :email, :name, :password, :password_confirmation

email_regex = /\A[\W+\-.]+@[a-z\d\-.]+\.|[a-z]+\z/i

validates :name, :presence => true,
:length => { :maximum => 50 }
validates :email, :presence => true,
:format => { :with => email_regex },
:uniqueness => { :case_sensitive => false }
validates :password, :presence => true,
:confirmation => true,
:length => { :within => 6..40 }


end

最佳答案

您的迁移没有任何问题。该错误仅表示您在 db 中有现有的电子邮件重复数据。

检查您的用户表,为现有行设置唯一的电子邮件或删除这些行。然后再次运行迁移。

更新:请注意,即使您从迁移中删除唯一约束并添加 validates_uniqueness_of :email到你的主动模型,这个问题在 future 仍然会吃掉你。

根本问题是您的数据处于“坏”状态。如果您有两行具有相同的电子邮件地址(或者也有可能它们都有空白电子邮件),在添加 validates_uniqueness_of :email 之后您的 User这两行的模型实例将无效。所以这仍然是一个你必须解决的数据问题。

关于ruby-on-rails - Rake Aborted , on add_index( :users, :email, {:unique=>true}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com