【发布时间】:2010-12-11 08:11:21
【问题描述】:
我在迁移中做这种事情:
add_column :statuses, :hold_reason, :string rescue puts "column already added"
但事实证明,虽然这适用于 SQLite,但不适用于 PostgreSQL。似乎如果 add_column 爆炸了,即使捕获到异常,事务也已死亡,因此迁移无法做任何额外的工作。
是否有任何非数据库特定方法来检查列或表是否已存在?如果做不到这一点,有没有办法让我的救援块真正起作用?
【问题讨论】:
-
需要说明的是,条件迁移会导致回滚问题,因为在回滚阶段不知道前向迁移的条件是什么
-
只做回滚中的非可选部分