Entfernen Sie das Schienenmodell nach der Migration

8

Es scheint mir seltsam, dass die Erstellung des Modells, das Ausführen der Migration, das Zerstören und das erneute Erstellen des gleichen Modells SQL-Ausnahme meldet:

%Vor%

Vielleicht mache ich etwas falsch? Die Migration hat einen Code zum Löschen der Tabelle - kann sie nur für das Zurücksetzen verwendet werden?

Lösung

Löschen Sie die Modell- und Datenbanktabelle und erstellen Sie eine neue Tabelle:

  1. Modell erstellen: rails g model user name
  2. Führen Sie Migrationen durch: rake db:migrate
  3. Implementieren Sie etwas, denken Sie daran, dass Sie das Modell
  4. löschen müssen
  5. Reverse spezifische Migration: rake db:migrate:down VERSION=20130417185814 , wobei 20130417185814 die Migrations-ID ist (kann in Rake db gesehen werden: migrate: status)
  6. Modell entfernen: rails d model user
  7. Merken Sie sich plötzlich, dass Sie dieses Modell benötigen, aber mit anderen Feldern
  8. Modell erstellen: rails g model user email group:references
  9. Datenbank erfolgreich migrieren: rake db:migrate
Drakmail 17.04.2013, 19:16
quelle

3 Antworten

9
%Vor%

Dies löscht nur das Modell und nicht die Migration, die Sie ausgeführt haben (wodurch die Tabelle in der Datenbank erstellt wurde).

Wenn Sie sowohl das Modell als auch die Tabellen löschen möchten, müssen Sie Folgendes tun:

%Vor%     
Nishant 17.04.2013, 19:23
quelle
4

Sie haben das Modell gelöscht. Das ist eine andere Operation als das Zurücksetzen einer Migration.

Das Zerstören eines Modells macht genau das, und nur das; Es hat nichts mit Migrationen zu tun.

    
Dave Newton 17.04.2013 19:19
quelle
0

Gemäß Ihrem Migrationsfehler muss etwas mit den Migrationsdateien nicht stimmen, außerdem mit der, die sich auf die Namentabelle bezieht.

Bitte schauen Sie sich diese Datei an, bei Ihrer Änderungsmethode.

Die Änderungsmethode in einer Migrationsdatei soll einen DB-Code ausführen, der DB-Code kann einige Operationen in der DB ausführen, und derselbe Code für die Änderung, die für das Zurückrollen gelten soll.

Wenn Sie zwischen den beiden trennen möchten, sollten Sie den Code auf die up-Methode setzen, die Operationen in der DB ausführt, und auf die down-Methode die entgegengesetzten rollenden Operationen.

Ich würde vorschlagen, dass Sie alle Dateien auf der Migration löschen, einschließlich der, die das Problem verursachen, und schreiben Sie sie korrekt.

Wenn Sie Hilfe benötigen, geben Sie bitte Ihre Migrationsdatei an.

Bitte werfen Sie auch einen Blick auf die Anleitungen: Ссылка

    
moshik.salem 17.04.2013 20:01
quelle