Ich habe bei meinen Migrationen so etwas gemacht:
add_column :statuses, :hold_reason, :string rescue puts "column already added"
Es stellt sich jedoch heraus, dass dies zwar für SQLite funktioniert, für PostgreSQL jedoch nicht . Es scheint, als ob die add_column explodiert, selbst wenn die Ausnahme abgefangen wird, die Transaktion tot ist und die Migration keine zusätzliche Arbeit leisten kann.
Gibt es nicht DB-spezifische Möglichkeiten, um zu überprüfen, ob bereits eine Spalte oder Tabelle vorhanden ist? Wenn das nicht gelingt, gibt es eine Möglichkeit, meinen Rettungsblock wirklich zum Laufen zu bringen?