【发布时间】:2014-01-10 00:43:19
【问题描述】:
我的情况如下:我正在开发我的 rails 应用程序并决定创建一个模型,因此我使用了命令 rails generate model Micropost content:string user_id:integer。之后,创建了迁移文件db/migrate/[timestamp]_create_microposts.rb,并开始使用它添加一些列和索引。最后我使用rake db:migrate 进行了迁移。
问题来了,当我决定需要返回并删除模型Micropost,所以我错误地使用rails destroy model Micropost直接删除模型,然后我意识到我需要回滚到数据库。但它不再起作用了,因为当我点击 rails destroy 时,迁移文件被删除了。
是否有任何“不错”或“正确”的方法可以返回到初始数据库版本,即在我创建模型 Micropost 之前的那个?
我的rake db:migrate:state 如下:
Status Migration ID Migration Name
--------------------------------------------------
up 20140101222024 Create users
up 20140102220824 Add index to users email
up 20140102222352 Add password digest to users
up 20140105055539 Add remember token to users
up 20140108013447 Add admin to users
up 20140109211729 ********** NO FILE **********
顺便说一下,像创建具有相同名称 id 的“虚拟”迁移文件(我发现 here)之类的解决方案不是解决方案,它会只跳过回滚(Microposts 表仍然存在)。另外,我发现this question 很有用,但不是同一个问题,因为我在回滚(或迁移到以前的版本)之前破坏了模型。
底线:
有没有办法执行这个回滚?还是因为迁移文件被删除而无法实现?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3