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