Wir haben eine script/generate migration add_fieldname_to_tablename fieldname:datatype
Syntax zum Hinzufügen neuer Spalten zu einem Modell.
Haben wir in derselben Zeile ein Skript / Generieren zum Ändern des Datentyps einer Spalte? Oder sollte ich SQL direkt in meine Vanille-Migration schreiben?
Ich möchte eine Spalte von datetime
nach ändern date
.
ruby-on-rails
migration
papdel
quelle
quelle
change
Aktion durch separateup
unddown
Aktionen ersetzen sollten , da dieschange_column
eine irreversible Migration ist und einen Fehler auslöst, falls Sie ein Rollback durchführen müssen.Sie können auch einen Block verwenden, wenn Sie mehrere Spalten innerhalb einer Tabelle ändern müssen.
Beispiel:
Weitere Informationen finden Sie in der API-Dokumentation zur Table-Klasse .
quelle
Mir ist nicht bekannt, ob Sie eine Migration über die Befehlszeile erstellen können, um all dies zu tun, aber Sie können eine neue Migration erstellen und dann die Migration bearbeiten, um diese Aufgaben auszuführen.
Wenn Tabellenname der Name Ihrer Tabelle ist, Feldname der Name Ihres Feldes ist und Sie von Datum zu Datum wechseln möchten, können Sie dazu eine Migration schreiben.
Sie können eine neue Migration erstellen mit:
Bearbeiten Sie dann die Migration, um change_table zu verwenden:
Führen Sie dann die Migration aus:
quelle
Wie ich aus den vorherigen Antworten herausgefunden habe, sind drei Schritte erforderlich, um den Typ einer Spalte zu ändern:
Schritt 1:
Generieren Sie eine neue Migrationsdatei mit diesem Code:
Schritt 2:
Gehen Sie zum
/db/migrate
Ordner und bearbeiten Sie die von Ihnen erstellte Migrationsdatei. Es gibt zwei verschiedene Lösungen.2.
Schritt 3:
Vergessen Sie nicht, diesen Befehl auszuführen:
Ich habe diese Lösung für Rails 4 getestet und sie funktioniert gut.
quelle
Mit Schienen 5
Von Rails Guides :
quelle
Generieren Sie einfach eine Migration:
Aktualisieren Sie die Migration wie folgt:
und schlussendlich
quelle
Eine andere Möglichkeit, den Datentyp mithilfe der Migration zu ändern
Schritt 1: Sie müssen den Feldnamen des fehlerhaften Datentyps mithilfe der Migration entfernen
Ex:
Vergessen Sie hier nicht, den Datentyp für Ihr Feld anzugeben
Schritt 2: Jetzt können Sie ein Feld mit dem richtigen Datentyp hinzufügen
Ex:
Das war's, jetzt wird Ihre Tabelle mit dem richtigen Datentypfeld hinzugefügt. Happy Ruby Coding !!
quelle
Dies alles setzt voraus, dass der Datentyp der Spalte eine implizite Konvertierung für alle vorhandenen Daten aufweist. Ich bin auf mehrere Situationen gestoßen, in denen die vorhandenen Daten, sagen
String
wir, implizit in den neuen Datentyp konvertiert werden könnenDate
.In dieser Situation ist es hilfreich zu wissen, dass Sie Migrationen mit Datenkonvertierungen erstellen können. Persönlich mag ich es, diese in meine Modelldatei aufzunehmen und sie dann zu entfernen, nachdem alle Datenbankschemas migriert wurden und stabil sind.
quelle
So vervollständigen Sie die Antworten beim Bearbeiten des Standardwerts :
In Ihrer Rails-Konsole:
In der Migration:
Wird aussehen wie :
quelle