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