run rails drop down create commands column ruby-on-rails railstutorial.org

ruby-on-rails - drop - ruby on rails rollback migration



rake db: migrate no está funcionando (3)

Intente reconstruir la estructura de su base de datos ( ADVERTENCIA: todos los datos de la base de datos se perderán):

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

Si usa Rails <4.1, no olvide preparar la base de datos de prueba:

rake db:test:prepare

Esta es la solución más fácil ya que está trabajando con un tutorial. Sin embargo, en producción o teniendo datos importantes en desarrollo, debería tomar tiempo para investigar el problema. En este caso, lo más probable es que haya creado una migración vacía, ejecutó rake db:migrate , luego agregó instrucciones a la migración, por lo que no ve un nuevo campo y rake db:migrate no hace nada. Para resolver este problema, debe comentar sus instrucciones de change , realizar rake db:rollback , descomentar las instrucciones y luego rake db:migrate para aplicar las instrucciones que no encontró.

Estoy trabajando a través del tutorial de rieles y me he quedado atascado. Comenzando en el listado 8.16, he realizado las siguientes modificaciones en <timestamp>_add_remember_token_to_users.rb :

class AddRememberTokenToUsers < ActiveRecord::Migration def change add_column :users, :remember_token, :string add_index :users, :remember_token end end

La guía luego dice que actualice dev & test db como siempre:

$ bundle exec rake db:migrate $ bundle exec rake db:test:prepare

Mi prueba de usuario para el * remember_token * sigue fallando, así que eché un vistazo a la tabla de usuarios en dev y la base de datos de pruebas con la línea de comandos sqlite3. Se ven así:

sqlite> .schema users CREATE TABLE "users" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "password_digest" varchar(255)); CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email");

Parece que mi migración aún no se ha ejecutado, pero no sé cómo forzarla a ejecutarse.


Retroceda y luego vuelva a ejecutar la migración que podría funcionar.

rake db:rollback

Y después de retroceder, vuelve a ejecutar tus migraciones.


Tuve el mismo problema que la pregunta inicial. $ bundle exec rake db:migrate migrate no estaba agregando record_token a .db y la respuesta de Latha Doddikadi funcionó para mí.

Yo si:

rake db:rollback

y entonces:

$ bundle exec rake db:migrate

que agregó el campo remember_token a la base de datos seguido por:

bundle exec rspec spec/models/user_spec.rb

que pasó

Finished in 0.92841 seconds 21 examples, 0 failures