Frage

Ich habe 4 im Zusammenhang Migrationen in meiner Rails-Anwendung:

Die ersten 3 Migrationen erstellen eine Tabelle, die jeden in der self.up und und legt sie in ihren jeweiligen self.down Methoden.

4. Migration läuft eine Rake-Aufgabe, die lädt Daten für alle drei (in self.up). Ich denke, was in self.down dieser Migration zu versetzen, die Zeilen aus den drei Tabellen zu löschen?

Bin ich es falsch? Wahrscheinlich sollte man Migration erstellt haben, wo ich drei Tabellen erstellen und die Daten in self.up laden und fallen nur alle drei Tabellen in der self.down Methode?

War es hilfreich?

Lösung

Das ist falsch!

Migrations nur Ihre Daten Modell nicht Daten für die Migration verwendet werden soll.

Rails 2.3.4 fügt 'Samen'. Dies ist eine Datei in db / seeds.rb enthält Ruby-Code zu ‚Bootstrapping‘ Ihre Datenbank. Dies ist eine gute Möglichkeit, halb-statische Inhalte für die Datenbank wie Kategorien zu erstellen, Nachschlagetabellen oder Benutzerkonten.

Sie können dann laden Sie die Seed-Daten mit einer einfachen Rechen Aufgabe

rake db:seed

Andere Tipps

Es ist nicht wirklich eine richtige oder falsche Art und Weise, dies zu tun. Nach dem, was Sie getan haben, sollte die 4. Migration entladen nur die Daten in seinem down-Methode. Jeder nach unten sollte nur die Aktionen des oben rückgängig gemacht werden.

Laden von Daten in der Migration, die die Tabelle erstellt werden sicherlich nicht erforderlich. Wenn Sie 3 Tabellen, die has_many oder belongs_to Beziehungen schaffen, dann wäre es sinnvoll, die Daten in einer separaten Migration zu setzen, so dass Sie die Beziehungen erstellen und diese dann in Ihrer Datenlast verwendet werden.

das beiseite alles, wenn Sie einen Rechen Aufgabe haben Daten zu laden, warum mit Migrations der Mühe, die diese Rake Aufgabe ausgeführt wird? So stellen Sie laufen den Rechen Aufgabe Teil Ihrer installieren oder benutzen Sie einfach Ihre Rake Aufgabe zu laden oder einige Demonstrations Daten zu entladen.

Generell halte ich mein Migrationen Schema konzentriert, und ich würde in einer Harke Aufgabe jeden Laden von Daten habe ich unabhängig nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top