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=