Как выполнить откат к предыдущей миграции и удалить таблицы и столбцы в моей схеме? - PullRequest
0 голосов
/ 23 февраля 2019

Я работаю над проектом на Rails 5 и добавил несколько столбцов в некоторые из моих таблиц, а также создал новую таблицу.Это, очевидно, создало несколько файлов миграции, и я хотел бы вернуться к определенной миграции и удалить все изменения в схеме, которые были сделаны после этой миграции.Как мне это сделать?

Schema.rb:

ActiveRecord::Schema.define(version: 20180814220216) do

  create_table "stores", force: :cascade do |t|
    t.string "name"
    t.string "address"
    t.float "beer_cost"
    t.text "facilities"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.float "latitude"
    t.float "longitude"
    t.boolean "toilet"
    t.string "address_line2"
    t.string "address_line3"
    t.integer "user_id"
    t.integer "toilet_id"
    t.string "toilet_available"
  end

  create_table "toilets", force: :cascade do |t|
    t.string "toilet_available"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer "sign_in_count", default: 0, null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string "current_sign_in_ip"
    t.string "last_sign_in_ip"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end

end

Вывод после запуска rails db:migrate:status

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20180610144440  Create stores
   up     20180611145310  Change datatype beer cost
   up     20180611150425  Delete cig cost column
   up     20180611231832  Add longitude and latitude
   up     20180612194032  Add toilets column
   up     20180614125348  Add address line2 column
   up     20180614133234  Add address line3 column
   up     20180625201708  Devise create users
   up     20180625235156  Add user id to stores
   up     20180626124327  ********** NO FILE **********
   up     20180626124742  ********** NO FILE **********
   up     20180627115344  ********** NO FILE **********
   up     20180627115710  ********** NO FILE **********
   up     20180810102513  ********** NO FILE **********
   up     20180811094301  ********** NO FILE **********
   up     20180814220216  ********** NO FILE **********

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вы не должны были удалять миграции, как только вы удалили их, вы не сможете откатить их назад.Правильная последовательность шагов: rake db:rollback, , затем , удалить файл миграции.

На данный момент самое простое решение - использовать rails db, чтобы открыть терминал SQL, и вручную отброситьстолбцы / таблицы, которые вам не нужны, а затем rake db:schema:dump, чтобы обновить schema.rb.

0 голосов
/ 23 февраля 2019

Вы можете использовать: rails db:rollback STEP=<put the number of migrations you want to go back

Однако миграции все еще там, и если вы запустите rails db:migrate, вы все равно увидите все эти изменения.

Так что либо напишите новые миграции, которыеотмените предыдущие миграции, удалите таблицу, например.

или удалите ненужные файлы миграции вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...