Ich habe kürzlich meine schema.rb-Datei angeschaut und war alarmiert festzustellen, dass bestimmte Spalten, die in meiner Datenbank vorhanden sind, nicht angezeigt werden und einige Tabellen vollständig fehlen. Die fehlenden Spalten wurden über "def change add_column" -Migrationen zur Datenbank hinzugefügt, obwohl einige Spalten, die auf diese Weise hinzugefügt wurden, in schema.rb wie erwartet angezeigt werden.Warum wird meine schema.rb-Datei nicht aktualisiert?
Bei näherer Betrachtung stellte ich fest, dass schema.rb seit der Erstellung der Tabelle Users nicht aktualisiert wurde.
20151019205241_create_users.rb:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps null: false
end
end
end
Das ist für mich nicht verursacht hat ein Problem in der Praxis, aber ich dachte schema.rb sollte automatisch aktualisiert gehalten werden, und dass es wichtig wäre, es zu haben aktualisiert um die Datenbank neu zu erstellen. Kann mir jemand helfen, herauszufinden, warum es nicht aktualisiert werden würde?
Eine Möglichkeit ist, dass es aufgehört hat, aktualisiert zu werden, wenn ich meine Datenbank von sqlite3 zu postgresql wechselte. Ich erinnere mich nicht genau, aber ich denke, das Timing macht Sinn.
Nicht sicher, wie das Umschalten der Datenbank mit 'schema.rb' interferiert. Wird die Datei korrekt aktualisiert, wenn Sie jetzt eine 'Rake db: migrate' ausführen? (Sie müssen keine neuen Migrationen hinzufügen, damit diese Rake-Task erfolgreich ausgeführt werden kann.) – Raffael
Dies ist nicht der Fall. Wenn ich das nächste Mal die Datenbank aktualisiere, werde ich das testen. Für jetzt @ Smmeju Lösung unten funktioniert. Danke für deine Antwort! Sie haben recht, es scheint nichts mit dem Wechsel der Datenbanken zu tun zu haben. –