自 Rails 4.2 版本开始,ActiveRecord 引入了 reversible.up/reversible.down 功能,允许迁移步骤可以撤销。
示例代码如下:
class AddDetailsToProducts < ActiveRecord::Migration[4.2]
def change
add_column :products, :description, :text
reversible do |direction|
direction.up do
add_column :products, :color, :string
end
direction.down do
remove_column :products, :color
end
end
end
end
在上面的示例中,我们在迁移中添加了 reversible
的块,用于指定当我们运行迁移步骤时应该执行哪些操作。 在上面的示例中,我们在 up
方向上添加了一个名为 color
的新列,并在 down
方向上删除它。 当我们需要反转迁移时,Rails 知道如何自动执行这些更改,令迁移可逆。