Erstellen von Tabellen in Ruby-on-Rails 3 durch Migrationen?

8

Ich versuche den Prozess der Erstellung von Tabellen in Ruby-on-Rails 3 zu verstehen.

Ich habe über Migrationen gelesen. also sollte ich Tabellen erstellen, indem ich in den Dateien in:

redigiere %Vor%

aber sie wurden erzeugt von:

%Vor%

bedeutet das, dass ich immer den Befehl "rails generate model" verwenden muss, wenn ich eine Tabelle erstellen will?

Was passiert, wenn ich eine Migrationsdatei erstelle, aber Spalten hinzufügen möchte? Erstelle ich eine andere Migrationsdatei, um diese hinzuzufügen oder bearbeite ich die vorhandene Migrationsdatei direkt? Der Führer sagte mir, ich solle einen neuen hinzufügen, aber hier ist der Teil, den ich nicht verstehe. Warum sollte ich ein neues hinzufügen? Denn dann wird der neue Zustand von 2 Migrationsdateien abhängig sein.

und wie füge ich dann eine neue Migrationsdatei für die Aktualisierung hinzu? Was ist der Befehl? und wenn ich Spalten löschen oder bearbeiten muss. wie macht es das?

%Vor%

bewirkt, dass der obige Befehl nur Spalten hinzufügt.

und wenn ich die Befehle nicht verwende, wie erstelle ich Migrationsdateien?

in Symfony bearbeite ich einfach eine schema.yml Datei, es gibt keine Migrationsdateien mit Versionierung und so weiter.

und ich denke, in Django erstellen Sie einfach die Modelle und es erstellt die Datenbanktabellen.

ich bin neu in RoR und möchte ein Bild von der Erstellung von Tabellen bekommen.

Danke

    
never_had_a_name 13.06.2010, 07:40
quelle

3 Antworten

11

Wenn Sie eine Tabelle aktualisieren möchten, müssen Sie eine neue Migrationsdatei erstellen, da jede Migration nur einmal in der Datenbank ausgeführt wird. Wenn Sie also bereits eine posts -Tabelle haben, können Sie nach der Änderung der create_posts -Migration diese nicht mehr ausführen.

Sie können Migrationen zurücksetzen und sie dann erneut ausführen. Das würde das Problem lösen, aber es würde auch die Tabelle und die Daten, die es enthalten könnte, zerstören. Dies ist kein Problem, wenn Sie gerade die Migration erstellt haben und dann bemerkt haben, dass Sie eine Spalte verpasst haben. Dann können Sie die Spalte einfach zu Migration, Rollback und Migration hinzufügen. Aber Sie wollen das nicht in einer Produktionsdatenbank machen!

Um eine neue Migration zu erstellen, führen Sie einfach:

%Vor%

Wenn Sie Ihre Migration add_*_to_table aufrufen, können Sie auch dieselben Argumente übergeben wie in generate model :

%Vor%

Dies wird automatisch diese Migration generieren:

%Vor%

Dies funktioniert auch mit remove_*_from_table :

%Vor%

Die Migration wird sein:

%Vor%

Hier finden Sie weitere Methoden , die Sie bei Ihren Migrationen verwenden können.

    
Tomas Markauskas 13.06.2010, 09:20
quelle
5

Um eigenständige Migrationsdateien zu generieren, verwenden Sie:

%Vor%

Sobald Sie zu der generierten Datei gegangen sind, können Sie jedes SQL ausführen, das Sie mögen. Wenn Sie sich die anderen generierten Migrationen anschauen, erhalten Sie einen guten Startpunkt.

Im Allgemeinen haben Sie in Rails ein Modell für jede Tabelle, die Sie in Ihrer Datenbank haben. Ich kann mir keine speziellen Anwendungsfälle vorstellen, in denen Sie eine Tabelle ohne irgendeine Art von Modell haben, um auf diese Daten zuzugreifen. Wenn Sie sich eingehend über Migrationen informieren möchten, gehen Sie hier .

    
Garrett 13.06.2010 07:46
quelle
1

Was diese Frage betrifft Bedeutet das, dass ich jedes Mal, wenn ich eine Tabelle erstellen möchte, den Befehl rails generate model verwenden muss?

Probieren Sie migration_for aus Ich finde das hilfreich für mich. Finden Sie die Anleitung im Blog des Autors

%Vor%     
RSK 15.12.2011 09:45
quelle

Tags und Links