Estaba haciendo este tipo de cosas en mis migraciones:
add_column :statuses, :hold_reason, :string rescue puts "column already added"
pero resulta que, si bien esto funciona para SQLite, no funciona para PostgreSQL . Parece que si add_column explota, incluso si se detecta la excepción, la transacción está muerta y, por lo tanto, la migración no puede realizar ningún trabajo adicional.
¿Hay alguna forma específica que no sea de DB para verificar si ya existe una columna o tabla? De no ser así, ¿hay alguna forma de hacer que mi bloque de rescate funcione realmente?