rails 如何正确回滚某些迁移

rails How to properly rollback certain migrations

在我的博客项目中,我使用回形针来管理图片。现在我想切换到载波,并希望让我的项目就像回形针从未存在过一样。

首先,项目是这样的: 每篇博文都有很多图片,每张图片都有一张图片。 所以我为画廊生成了一个模型

rails g model pictures

这会创建迁移 create_pictures.rbpicture 模型。 然后我给图片模型添加了image属性

rails g paperclip picture image

这创建了迁移 AddAttachementImageToPictures.rb 然后我创建了迁移 AddPostIdToPictures

现在我想进行迁移以摆脱所有这些东西。 3 次迁移中的 2 次是关于向 pictures table 添加属性。所以我想知道我是否可以删除 pictures table 和 picture 模型?

rails g migration RemovePictures
rails d model Picture

还是需要先删除属性,然后再删除整个table?

是的,你做对了。您应该删除 pictures table,然后删除 Picture 模型。

如果您不需要 table,则无需单独删除每一列。或者,如果您打算对载波使用相同的模型,那么您只需删除回形针的属性并为载波创建新的属性。

link 将帮助您进行迁移更改。

是的,您可以删除提到的两行,这应该足够了。

如果您已经上传了一些图片并希望拥有相同的模型,只需更改 gem。看这里 Migrate from paperclip to carrierwave

您也可以一起阅读,Carrierwave migration

为了回滚到特定版本使用:

rake db:migrate:down VERSION=20100905201547