Mamy script/generate migration add_fieldname_to_tablename fieldname:datatype
składnię dodawania nowych kolumn do modelu.
Czy w tym samym wierszu mamy skrypt / generator do zmiany typu danych kolumny? Czy powinienem pisać SQL bezpośrednio w mojej waniliowej migracji?
Chcę zmienić kolumnę z datetime
na date
.
ruby-on-rails
migration
papdel
źródło
źródło
change
działanie oddzielnymiup
idown
działaniami, podobnie jakchange_column
nieodwracalna migracja i pojawi się błąd, jeśli będziesz musiał cofnąć.Możesz także użyć bloku, jeśli masz wiele kolumn do zmiany w tabeli.
Przykład:
Więcej informacji znajduje się w dokumentacji interfejsu API klasy Table .
źródło
Nie wiem, czy możesz wykonać migrację z wiersza polecenia, aby to wszystko zrobić, ale możesz utworzyć nową migrację, a następnie edytować migrację, aby wykonać tę taksówkę.
Jeśli tablename to nazwa tabeli, nazwa pola to nazwa pola i chcesz zmienić od daty do daty, możesz napisać migrację, aby to zrobić.
Możesz utworzyć nową migrację za pomocą:
Następnie edytuj migrację, aby użyć tabeli zmian:
Następnie uruchom migrację:
źródło
Jak znalazłem w poprzednich odpowiedziach, potrzebne są trzy kroki, aby zmienić typ kolumny:
Krok 1:
Wygeneruj nowy plik migracji przy użyciu tego kodu:
Krok 2:
Przejdź do
/db/migrate
folderu i edytuj utworzony plik migracji. Istnieją dwa różne rozwiązania.2)
Krok 3:
Nie zapomnij wykonać tej komendy:
Przetestowałem to rozwiązanie dla Rails 4 i działa dobrze.
źródło
Z szynami 5
Z prowadnic Rails :
źródło
Po prostu wygeneruj migrację:
Zaktualizuj migrację w następujący sposób:
i w końcu
źródło
Kolejny sposób zmiany typu danych za pomocą migracji
krok 1: Musisz usunąć nazwę pola uszkodzonego typu danych podczas migracji
dawny:
Nie zapomnij podać typu danych dla swojego pola
Krok 2: Teraz możesz dodać pole z poprawnym typem danych
dawny:
To wszystko, teraz twoja tabela zostanie dodana z poprawnym polem typu danych, Szczęśliwego kodowania ruby !!
źródło
Wszystko to przy założeniu, że typ danych kolumny ma domyślną konwersję dla wszelkich istniejących danych. Natknąłem się na kilka sytuacji, w których istniejące dane, powiedzmy,
String
można domyślnie przekonwertować na nowy typ danych, powiedzmyDate
.W tej sytuacji warto wiedzieć, że możesz tworzyć migracje z konwersjami danych. Osobiście lubię umieszczać je w moim pliku modelu, a następnie usuwać je po migracji wszystkich schematów bazy danych i ich stabilizacji.
źródło
Aby uzupełnić odpowiedzi w przypadku edycji wartości domyślnej :
W konsoli szyn:
W migracji:
Będzie wyglądać jak :
źródło