Rake Aborted, en add_index (: users,: email, {: unique => true})

Actualmente estoy trabajando en ruby ​​on rails 3 tutorial por michael hartl. Me estoy topando con este problema cuando trato de llamar a db: migrate. ¿Podría alguien ayudarme a averiguar por qué está abortando? ¡Gracias!

** 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")

CÓDIGO

 class AddEmailUniquenessIndex  true end def down remove_index :users, :email end end 

CODIGO DE USUARIO

 # == 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  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 

No hay nada malo con tu migración. El error simplemente significa que tiene datos duplicados de correo electrónico existentes en db.

Verifique la tabla de usuarios, configure correos electrónicos únicos para las filas existentes o elimine estas filas. A continuación, ejecute la migración de nuevo.

Actualización: Tenga en cuenta que incluso si elimina la restricción única de la migración y agrega validates_uniqueness_of :email a su modelo activo, el problema aún lo afectará en el futuro.

El problema de raíz es que sus datos están en un estado “malo”. Si tiene dos filas con la misma dirección de correo electrónico (o también es posible que ambos tengan un correo electrónico en blanco), después de agregar validates_uniqueness_of :email un validates_uniqueness_of :email su instancia de modelo de User para estas dos filas no será válido. Así que sigue siendo un problema de datos que tienes que arreglar.