我跑了脚手架'并且'迁移'
然后我感到遗憾,然后运行rails d scaffold xxx
然后db:rollback
发现该计划.rb没有改变。
我虽然这是因为migrate file
丢失了。如何恢复?
% rake db:migrate:status
up 20140916064606 Create tool mvaas securities
up 20140918034311 ********** NO FILE **********
down 20140918035954 Create tool cvt remote focus
答案 0 :(得分:1)
有两种选择:
如果您的工作受版本控制,并且您之前已将错过的迁移git checkout
提交到删除迁移之前,请将迁移内容git checkout
再次复制回当前状态,将复制的迁移内容粘贴到具有与旧时间戳相同的时间戳的新迁移中。现在db:rollback
应该有效。
如果您丢失的迁移从未进入版本控制,但您记得在scaffold中定义的字段(查看schema.rb
,如果回滚失败,所有字段仍然应该在那里)那么您可以重新-scaffold,修改新创建的迁移文件名,使其与旧文件名具有相同的时间戳,并db:rollback
。然后' rails d scaffold'清理一切。
我怀疑你已经很难学到这一点,但将来它会先为你db:rollback
,然后rails d scaffold
为你服务。
希望这有帮助!