rails如何正确回滚某些迁移

时间:2015-09-07 10:10:02

标签: ruby-on-rails ruby rails-migrations

在我的博客项目中,我使用paperclip来管理图片。现在我想切换到carrierwave,并希望让我的项目好像回形针从未出现过。

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

rails g model pictures

这会创建迁移create_pictures.rbpicture模型。 然后我将图像属性添加到图片模型

rails g paperclip picture image

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

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

rails g migration RemovePictures
rails d model Picture

或者我是否需要首先删除属性,然后删除整个表?

3 个答案:

答案 0 :(得分:3)

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

如果您不需要该表,则不需要单独删除每个列。或者,如果您计划为carrierwave使用相同的模型,那么您可以删除paperclip的属性并为carrierwave创建新的属性。

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

答案 1 :(得分:2)

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

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

您还可以阅读Carrierwave migration

答案 2 :(得分:0)

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

rake db:migrate:down VERSION=20100905201547