stavo facendo questo genere di cose nelle mie migrazioni:Migrazioni delle rotaie: verifica l'esistenza e continua a procedere?
add_column :statuses, :hold_reason, :string rescue puts "column already added"
Ma si scopre che, mentre questo funziona per SQLite, non funziona per PostgreSQL. Sembra che se la colonna add_column esplode, anche se viene rilevata l'eccezione, la transazione è morta e quindi la migrazione non può eseguire alcun lavoro aggiuntivo.
Esistono non DB modi per verificare se una colonna o tabella esistono già? In caso contrario, c'è un modo per far funzionare davvero il mio blocco di soccorso?
E 'considerato il miglior pract ghiaccio per controllare se esiste una colonna/tabella prima di aggiungerla/crearla? (So che ovviamente dipende dal problema nelle mani) –
Questo funziona con i rollback se lo definisco nel metodo di modifica? – dardub
Sì, il rollback sarebbe un problema ... non siamo sicuri se rimuovere la colonna o meno ... dal momento che non stiamo registrando lo stato precedente. – songyy