Je faisais ce genre de chose dans mon migrations:
add_column :statuses, :hold_reason, :string rescue puts "column already added"
mais il s'avère que, bien que cela fonctionne pour SQLite, il ne fonctionne pas pour PostgreSQL. Il semble comme si le add_column explose, même si l'Exception est interceptée, la transaction est mort et donc la Migration ne peut pas faire tout le travail supplémentaire.
Est-il un non-DB sepecific façons de vérifier si une colonne ou une table existe déjà? À défaut, est-il possible d'obtenir mon secours bloc pour vraiment travailler?