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 rake
rails 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=