Ruby on Rails: Как я могу вернуть миграцию с помощью rake db: migrate?

После установки утилиты MODEL User я получил это.

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end

    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
    # add_index :users, :confirmation_token,   :unique => true
    # add_index :users, :unlock_token,         :unique => true
    # add_index :users, :authentication_token, :unique => true
  end

  def self.down
    drop_table :users
  end
end

Теперь, если я делаю rake db: миграция таблицы пользователей будет создана.

Как я могу отменить эту миграцию, т.е. как я могу удалить таблицу пользователей с помощью рейка снова?

Ответ 1

run

rake db:migrate:down VERSION=<version>

где <version> - номер версии вашего файла миграции, который вы хотите вернуть.

например. если вы хотите вернуть миграцию с именем файла 3846656238_create_users.rb

rake db: migrate: down ВЕРСИЯ = 3846656238

Ответ 2

Просто запустите эту команду:

rake db:rollback

Ответ 3

Я считаю, что есть три варианта для возврата миграции (они также перекрываются):

  • Сбросьте самую последнюю миграцию:

    rake db:migrate:down # Только Rails 2.

  • Сбросьте число (n) недавних миграций:

    rake db:rollback STEP=n

  • Перейдите к предыдущей, конкретной версии:

    $ rake db:migrate:down VERSION=nnn # Rails 3 (также укажите номер версии).

Номер версии означает SHA (Secure Hash Algorithm) для фиксации, которая является длинным шестнадцатеричным числом, которое выглядит примерно так: 886af3194768917c78e... Вы можете увидеть это, выполнив git log

Вы можете увидеть эти команды (и другие) с их описаниями, используя rake -T db:, который для рельсов 3.2 включает в себя:

rake db:migrate         # Migrate the database (options: VERSION=x, VERBOSE=false)
rake db:migrate:status  # Display status of migrations
rake db:rollback        # Rolls the schema back to the previous version (specify steps w/ STEP=n)

Ответ 4

Вы можете выполнить откат и указать, сколько последних миграций будет отменено, например.

rake db:rollback STEP=3

для трех последних миграций.

Ответ 5

Как новый программист (или другим новым программистам)

rake db:rollback работает около половины времени. Я начинаю там.

Если нет, rake db:migrate:down VERSION=3846656238

подключите VERSION для номера версии вашего файла миграции, который вы хотите вернуть.

Ответ 6

rake db:migrate:redo

Отменит и повторно применит последнюю миграцию.

Ответ 7

Для рельсов 5 мы можем использовать rails command instead of rake

rails db:migrate:down VERSION=<version>

Пример

rails db: migrate: down ВЕРСИЯ = 20170330090327

Ответ 8

Запустите эту команду в терминале:

rake db:migrate:status

или

bundle exec rake db:migrate:status

Показывает статус, идентификаторы миграции, имя миграции для всех перенесенных нами ранее перемещений. выберите свой идентификатор миграции (т.е. номер версии) и поместите его в следующую команду после версии =,, и нажмите enter

bundle exec rake db:migrate:down VERSION=