Question

Je cherchais un moyen de déposer une table dans Rails et prendre un nouveau départ et suis tombé sur cette réponse: Rails DB migration - Comment faire pour supprimer une table

Cependant, quand je courais drop_table :examples j'ai eu l'erreur suivante:

-bash: drop_table: command not found

Voici mon fichier migrate create_examples:

def self.down
  drop_table :examples
end

Quelqu'un peut-il me guider dans la fixation de ce et me donner un aperçu sur ce que je fais mal? Je dois le corriger parce que ce migrate particulier empêche de faire un rake db:migrate, générant l'erreur suivante:

==  CreateExamples: migrating ====================================================
-- create_table(:examples)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "examples" already exists: CREATE TABLE "examples" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "content" varchar(255), "user_id" integer, "created_at" datetime, "updated_at" datetime) 

Merci! (Et si je dois fournir plus de code me faire savoir.)

Était-ce utile?

La solution

Vous devriez laisser tomber votre vieille table juste avant la création de la nouvelle version:

def self.up
    drop_table :examples
    create_table :examples do |t|
        #...
    end
end

Et puisque vous ne pouvez pas vraiment inverser cette drop_table, vous voudrez peut-être soulever une exception dans le rollback:

def self.down
    raise ActiveRecord::IrreversibleMigration
end

Ou peut-être vous voulez juste garder votre self.down actuelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top