Po zainstalowaniu devise MODEL User otrzymałem to.
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
Teraz, jeśli zrobię rake db: migrate, zostanie utworzona tabela użytkowników.
Jak mogę cofnąć tę migrację, tj. Jak ponownie usunąć tabelę użytkowników za pomocą rake?
UnknownMigrationVersionError
ale zorientowałem się, że to dlatego, że moje migracje są w środkudb/migrate/main
, czy ktoś zna obejście tego, abydb:migrate:down
zajrzeć do tego konkretnego katalogu lub podkatalogów migracji?Po prostu uruchom to polecenie:
rake db:rollback
źródło
Uważam, że istnieją trzy opcje cofania migracji (również się pokrywają):
Wycofaj ostatnią migrację:
rake db:migrate:down
# Tylko szyny 2.Pokaż liczbę (n) ostatnich migracji:
rake db:rollback STEP=n
Przejdź do poprzedniej, konkretnej wersji:
$ rake db:migrate:down VERSION=nnn
# Rails 3 (podaj również numer wersji).Numer wersji oznacza SHA (Secure Hash Algorithm) dla zatwierdzenia, który jest długą liczbą szesnastkową, która wygląda jak 886af3194768917c78e ... Możesz to zobaczyć, wykonując
git log
Możesz zobaczyć te polecenia (i inne) z ich opisami, używając
rake -T db:
których dla rails 3.2 obejmuje: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)
źródło
rake db:migrate VERSION=<version number>
rake db:migrate:down
przerywany z komunikatem o błędzie „VERSION jest wymagana”. Zalecarake db:rollback
jednak działa.STEP
iVERSION
$ rake db:migrate:down VERSION=nnn
nie stoczyć się do wersji, że wędruje w dół w wersji podanej.Możesz zrobić wycofanie i określić, ile ostatnich migracji zostanie wycofanych, np
rake db:rollback STEP=3
przez ostatnie 3 migracje.
źródło
Jako nowy programista (lub dla innych nowych programistów)
rake db:rollback
działa mniej więcej przez połowę czasu. Tam zaczynam.Jeśli nie,
rake db:migrate:down VERSION=3846656238
podłącz VERSION dla numeru wersji pliku migracji, który chcesz przywrócić.
źródło
rake db:migrate:redo
Cofnie i ponownie zastosuje ostatnią migrację.
źródło
Do szyn 5 możemy użyć
rails command instead of rake
rails db:migrate:down VERSION=<version>
przykład
źródło
Uruchom to polecenie w swoim terminalu:
rake db:migrate:status
lub
bundle exec rake db:migrate:status
Pokazuje status, identyfikator migracji, nazwę migracji dla wszystkich migracji, które przeprowadziliśmy wcześniej. wybierz identyfikator migracji (tj. numer wersji) i umieść ten identyfikator w następującym poleceniu po wersji = ,, i naciśnij klawisz Enter
bundle exec rake db:migrate:down VERSION=
źródło
Jak przywrócić migrację
(1) Najpierw zidentyfikuj identyfikator migracji
rake db:migrate:status
(2) Następnie wycofaj migrację
rake db:migrate:down VERSION=20190802023239
....... a teraz ruszasz na wyścigi!
źródło