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