Я робив такі речі в міграціях:
add_column :statuses, :hold_reason, :string rescue puts "column already added"
але виявляється, що, хоча це працює для SQLite, воно не працює для PostgreSQL . Здається, якщо add_column підірветься, навіть якщо буде вилучено виняток, транзакція мертва, і тому перенесення не може виконати жодної додаткової роботи.
Чи існують якісь окремі способи перевірки, чи вже існують стовпець або таблиця? Якщо цього не вдасться, чи є спосіб досягти того, щоб мій рятувальний блок справді працював?