Вопрос

Я искал способ сбросить стол в рельсах, начать все сначала и наткнулся на этот ответ: Миграция Rails DB - Как бросить стол?

Однако, когда я побежал drop_table :examples Я получил следующую ошибку:

-bash: drop_table: command not found

Вот мой create_examples мигрировать файл:

def self.down
  drop_table :examples
end

Кто -нибудь может помочь мне исправить это и дать мне представление о том, что я делаю не так? Мне нужно исправить это, потому что эта конкретная мигрирование не позволяет делать rake db:migrate, создание следующей ошибки:

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

Спасибо! (И если мне нужно предоставить больше кода, дайте мне знать.)

Это было полезно?

Решение

Вы должны сбросить свой старый стол прямо перед созданием новой версии:

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

И так как вы не можете изменить это drop_table, вы можете поднять исключение в отказе:

def self.down
    raise ActiveRecord::IrreversibleMigration
end

Или, может быть, вы просто хотите сохранить свой текущий self.down.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top