Я делал такого рода вещь в своих миграциях:
add_column :statuses, :hold_reason, :string rescue puts "column already added"
но оказывается, что, в то время как это работает на SQLite, он не работает на PostgreSQL. Походит, если add_column аварийно завершается, даже если Исключение поймано, транзакция мертва и таким образом, Миграция не может сделать никакой дополнительной работы.
Есть ли какой-либо неDB sepecific способы проверить, существуют ли столбец или таблица уже? Сбой этого, там какой-либо способ заставить мой спасательный блок действительно работать?