Ruby on Rails:как я могу вернуть миграцию с помощью rake db: migrate?
после установки devise 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:migrate, будет создана таблица пользователей.
Как я могу отменить эту миграцию, т. е. как я могу снова удалить таблицу пользователей с помощью rake ?
8 ответов:
run
rake db:migrate:down VERSION=<version>здесь
<version>- номер версии файла миграции, который вы хотите восстановить.например. если вы хотите отменить миграцию с именем файла 3846656238_create_users.РБ
rake db: migrate:down VERSION=3846656238
Я считаю, что есть три варианта возврата миграции (они также перекрываются):
опусти последние миграция:
rake db:migrate:down# только рельсы 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)
вы можете выполнить откат и указать, сколько последних миграций будет откатано, например
rake db:rollback STEP=3за 3 последних миграций.
как новый программист (или другим новым программистам)
rake db:rollbackработает примерно в половине случаев. Я начинаю с этого., Если не
rake db:migrate:down VERSION=3846656238подключите версию для номера версии вашего файла миграции, который вы хотите вернуть.
для рельсов 5 мы можем использовать
rails command instead of rakerails db:migrate:down VERSION=<version>пример
rails db: migrate:down VERSION=20170330090327
выполните эту команду в терминале:
rake db:migrate:statusили
bundle exec rake db:migrate:statusон показывает статус, идентификатор миграции, имя миграции для всех миграций, которые мы выполняли ранее. выберите свой идентификатор миграции (т. е. номер версии) и поместите этот идентификатор в следующую команду после version=,,, и нажмите enter
bundle exec rake db:migrate:down VERSION=