Wie ändern Sie ein Modell, das Sie mithilfe von Modellierung erstellt haben? Zum Beispiel hatte das Modell myModel ursprünglich die Spalten a, b und c, aber ich möchte jetzt die Spalte d hinzufügen.Schienen: Ändern eines Modells, das von Gerüst erzeugt wird
Antwort
Rails 3 und höher verwenden Sie folgenden Code:
rails generate migration add_fieldname_id_to_tablename fieldname:string
Rails 2
ruby script/generate migration add_fieldname_to_tablename fieldname:string
Dies funktioniert nicht mehr und gibt den folgenden Fehler in Rails 3:
Ruby: Keine solche Datei oder Verzeichnis - script/generate (LoadError)
Die beste Antwort, die ich bisher gefunden habe diese Wurzel aus dem Projekt ausgeführt wird:
ruby script/generate migration add_d_column_to_myModel
die neue Migrationsdatei in db/Migration befindet sich dann bearbeiten etwas aussehen:
def self.up
add_column :myModel, :d, :string
end
def self.down
remove_column :myModel, :d
end
Der letzte Schritt besteht darin, Ihre Ansichten entsprechend zu aktualisieren.
Antwort gefunden here
Tabellenfunktionen here gefunden
Verwirrt - warum haben Sie die Frage gestellt, ob Sie eine gute Antwort hatten? Warum nicht in der ursprünglichen Frage posten und nach besseren Lösungen fragen? – zenazn
Ich denke, Sie haben Ihre eigene Frage beantwortet. Eine Sache werde ich jedoch sagen, dass Sie in einigen Fällen die Modellmigration direkt bearbeiten können. Migrationen sind großartig, wenn Sie eine Website in Produktion haben, aber für die laufende Entwicklung haben Sie oft den Luxus, die DB wegzublasen und von vorne anzufangen. –
Ich habe meine eigene Frage aus 2 Gründen beantwortet. Erstens, das war die beste Antwort, die ich gefunden habe, aber ich bin neu bei Rails und dachte, es könnte einen besseren Weg geben, den ich nicht gefunden habe. Zweitens war die Frage nicht auf StackOverflow gepostet worden, also habe ich beschlossen, sie hinzuzufügen. –
ruby script/generate migration add_fieldname_to_tablename fieldname:string
das ist die Abkürzung Methode genau das zu tun, was Sie wollen. Wenn Sie mehr Kontrolle benötigen, oder wenn Sie viele Spalten hinzufügen müssen, wird die Antwort von Andrew H auch gut funktionieren.
wird dies auch die Ansichten aktualisieren? – femi
Nein, die Ansichten werden nicht aktualisiert. – cynicalman
Dies war die akzeptierte Antwort, aber ich habe sie aufgrund der Notiz in NeoNMDs Antwort auf diese Antwort geändert. –
- 1. überspringen JSON-Format in Schienen erzeugt Gerüst
- 2. anpassen Schienen erzeugen Gerüst
- 3. Unterschied zwischen Gerüst und Modell in Schienen
- 4. Pluralform des generierten Modells in Schienen ändern?
- 5. Schienen verwenden Gerüst api erzeugten Objekts Eigenschaft
- 6. Gerüst eines externen Modells in ASP.NET MVC 5
- 7. Dynamisches Gerüst in Schienen 2.2.2
- 8. undefinierte Klasse von Gerüst aus Schienen
- 9. eine Datenbank, die nicht von Rechen und Gerüst in Schienen erzeugt
- 10. Schienen/ActiveRecord: Speichern von Änderungen an zugeordneten Sammlungen eines Modells
- 11. Übergabe eines Modells an eine Methode in Schienen
- 12. Routing eines polymorphen Modells mit mehreren Nestern in Schienen?
- 13. Gerüst Generation
- 14. Wie kann ich die Größe eines linearen Modells reduzieren, das von einer Shiny-App gespeichert wird?
- 15. Schienen 4 - wie wird das "/ tmp" gereinigt?
- 16. MVC - Implementierung eines Modells
- 17. Abrufen eines Modells von ModelAndView in Jsp
- 18. Django: Wie man Daten eines Modells von einem anderen Modell erzeugt?
- 19. Erneutes Öffnen eines ActiveRecord-Modells, das von einem Juwel bereitgestellt wird
- 20. Erneutes Generieren von Gerüst
- 21. Kreuzvalidierung eines CART-Modells
- 22. Warum wird ein Gerüst nicht funktionieren?
- 23. Ändern des Verhaltens eines Django-Modells mit __getattr__
- 24. Datenbank- und Beziehungsdesign beim Unterklassen eines Modells
- 25. CodeIgniter - mehrere Instanzen eines Modells
- 26. Filtern eines Modells von seinen Kindern
- 27. Re-Scaffold Ansichten nach dem Ändern ihres Modells
- 28. Ausführen eines Tensorflow-Modells unter Android
- 29. Sencha Architekt: Untermodellierung eines Modells
- 30. Hinzufügen eines benutzerdefinierten Modells zur Spreelogik
Danke, wäre schön, die nicht funktionierende Kombination zu streichen, obwohl es ein bisschen verwirrt ... Oder kann eine Art von Headern (Rails <= 2, Rails > = 3 zum Beispiel). – Wiseman
Danke Wiseman, gerade bearbeitet, um das zu berücksichtigen, ist das besser? – BookOfGreg
Ja, perfekt, danke :) – Wiseman