Myślę, że powinieneś naprawić obraźliwe migracje, aby były mniej wrażliwe, domyślam się, że wystarczy kilka oświadczeń if
i być może rescue
.
Ale jeśli naprawienie migracji naprawdę nie jest opcją, możesz udawać ją na różne sposoby. Po pierwsze, możesz po prostu skomentować metody migracji, uruchomić rake db:migrate
, a następnie odkomentować (lub przywrócić) nieprawidłową migrację.
Możesz również sfałszować go w bazie danych, ale tego rodzaju szykany nie są zalecane, chyba że wiesz, co robisz i nie masz nic przeciwko ręcznemu naprawianiu rzeczy, gdy (nieuchronnie) popełnisz błąd. W bazie danych znajduje się tabela o nazwie schema_migrations
z pojedynczą kolumną o nazwie version
; ta tabela jest używana przez db:migrate
, aby śledzić, które migracje zostały zastosowane. Wszystko, co musisz zrobić, to wstawić odpowiednią wartość version
, a rake db:migrate
pomyśli, że migracja została wykonana. Znajdź plik migracji wykraczająca:
db/migrate/99999999999999_XXXX.rb
następnie przejść do bazy danych i powiedzieć:
insert into schema_migrations (version) values ('99999999999999');
gdzie 99999999999999
jest, oczywiście, liczba od nazwy pliku migracji jest. Uruchomienie rake db:migrate
powinno pomijać tę migrację.
Z trzecią opcją skorzystam z trzeciej opcji, a do uzupełnienia dodam tylko opcję "hack schema_versions
".
Ya, ja po prostu poszedł do przodu i wyciąć migracje naruszające tymczasowo. Osobiście utworzyłem odpowiednie instrukcje If lub po prostu sprawdziłem w środowisku produkcyjnym, ale najwyraźniej osoba, która obsługuje migracje, nie wierzy w używanie db: migrate podczas rozwijania = P Dzięki – hmind
@hmind: "osoba, która obsługuje migracje nie wierzą w używanie db: migrate podczas rozwijania ". O mój. Publikowanie w swoich systemach produkcyjnych musi być super radosną zabawą! –
Na szczęście nie poradzę sobie z tym ani haha – hmind