最佳答案
我在迁徙的时候做过这样的事:
add_column :statuses, :hold_reason, :string rescue puts "column already added"
但结果是 虽然这适用于 SQLite,但不适用于 PostgreSQL。似乎是这样的,如果 add _ column 爆炸,即使抓住了例外,事务就会死亡,因此迁移不能执行任何额外的工作。
是否有任何 非数据库专用方法来检查一个列或表是否已经存在?如果做不到这一点,有没有办法让我的救援块真正起作用呢?