Миграции направляющих: проверить существование и продолжать идти?

Я делал такого рода вещь в своих миграциях:

add_column :statuses, :hold_reason, :string rescue puts "column already added"

но оказывается, что, в то время как это работает на SQLite, он не работает на PostgreSQL. Походит, если add_column аварийно завершается, даже если Исключение поймано, транзакция мертва и таким образом, Миграция не может сделать никакой дополнительной работы.

Есть ли какой-либо неDB sepecific способы проверить, существуют ли столбец или таблица уже? Сбой этого, там какой-либо способ заставить мой спасательный блок действительно работать?

71
задан Dan Rosenstark 29 October 2009 в 17:12
поделиться