Ich kann schlecht benennen und stelle fest, dass meine Rails-App bessere Namen für meine Modelle enthält.
Gibt es eine Möglichkeit, eine Migration zum Umbenennen eines Modells und der entsprechenden Tabelle zu verwenden?
ruby-on-rails
migration
rails-activerecord
Schreibgeschützt
quelle
quelle
rake db:migrate
, schlägt es fehl. Sie könnten zurückgehen und diese Namen in der Migration ändern, aber das wird chaotisch. Möglicherweise ist es besser, nur ein völlig neues Modell zu erstellen, als es umzubenennen.rake db:schema:load
?rake db:migrate
wird davon abgeraten, eine Datenbank von Grund auf neu einzurichten, und zwar genau aufgrund der Bedenken, auf die Andrew hingewiesen hat.Antworten:
Hier ist ein Beispiel:
Ich musste die Modelldeklarationsdatei manuell umbenennen.
Bearbeiten:
In Rails 3.1 und 4
ActiveRecord::Migration::CommandRecorder
erfahren Sie , wie Sie die Migration von rename_table umkehren. Gehen Sie also folgendermaßen vor:(Sie müssen Ihre Dateien noch manuell umbenennen.)
quelle
git grep -i activit
ist sehr aufschlussreich.In Rails 4 musste ich nur die Def-Änderung vornehmen
Und alle meine Indizes wurden für mich gepflegt. Ich musste die Indizes nicht manuell aktualisieren, indem ich die alten entfernte und neue hinzufügte.
Und es funktioniert, wenn die Änderung auch in Bezug auf die Indizes nach oben oder unten geht.
quelle
Die anderen Antworten und Kommentare betrafen das Umbenennen von Tabellen, das Umbenennen von Dateien und das Durchsuchen Ihres Codes.
Ich möchte noch ein paar Einschränkungen hinzufügen:
Verwenden wir ein Beispiel aus der Praxis, mit dem ich heute konfrontiert war: Umbenennen eines Modells von "Händler" in "Geschäft".
quelle
Sie müssen auch Ihre Indizes ersetzen:
Und benennen Sie Ihre Dateien usw. manuell um, wie in anderen Antworten hier beschrieben.
Siehe: http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
Stellen Sie sicher, dass Sie nach dem Schreiben dieser Migration einen Rollback und einen Rollback durchführen können. Es kann schwierig werden, wenn Sie etwas falsch machen und bei einer Migration stecken bleiben, die versucht, etwas zu bewirken, das nicht mehr existiert. Am besten werfen Sie die gesamte Datenbank in den Papierkorb und starten Sie erneut, wenn Sie kein Rollback durchführen können. Seien Sie sich also bewusst, dass Sie möglicherweise etwas sichern müssen.
Außerdem: Überprüfen Sie schema_db auf relevante Spaltennamen in anderen Tabellen, die durch ein has_ odereins_to oder etwas definiert sind. Sie müssen diese wahrscheinlich auch bearbeiten.
Und schließlich wäre es verrückt, dies ohne eine Regressionstestsuite zu tun.
quelle
Sie können diesen Befehl ausführen: Rails g Migration Rename_ {alter_Tabellenname} nach {neuer_Tabellenname}
Nachdem Sie die Datei bearbeitet und diesen Code in die Methodenänderung eingefügt haben
Umbenennungstabelle: {alter_Tabellenname} ,: {neuer_Tabellenname}
quelle