我不确定这是否是错误或是否确实删除了migration.rb文件。我使用generate来创建以下迁移:
$ rails generate migration add_delta_to_submissions

    invoke  active_record
    create    db/migrate/20111020175649_add_delta_to_submissions.rb

然后我意识到自己忽略了任何列,因此我在控制台中使用了UP ARROW并用destroy覆盖了generate:
$ rails destroy migration add_delta_to_submissions
    invoke  active_record
    remove    db/migrate/20111020175649_add_delta_to_submissions.rb

到目前为止一切都很好,现在是时候用我需要的列运行迁移了。问题出在这里-我再次使用了向上箭头-但只使用了一次-并添加了我的列信息:
$ rails destroy migration add_delta_to_submissions delta:integer
    invoke  active_record
    remove    migration.rb

我意识到我可能不应该将UP ARROW用于像GENERATE和DESTROY这样的 volatile 命令(经验教训!),但是该命令又回来了,指出它删除了migration.rb文件。我什至不知道有一个migration.rb文件-特别是没有一个文件可以这么容易地删除。

对于踢,我决定尝试通过在单词迁移的末尾添加字母x来欺骗命令控制台,并收到以下消息:
$ rails destroy migrationx add_delta_to_submissions delta:integer
    Could not find generator migrationx.

因此,我认为rails destroy命令可能存在错误。一旦意识到不再有add_delta_to_submissions.rb文件,它就将其关闭,然后将.rb附加到单词迁移(或DESTROY之后的任何单词)上。似乎有点危险...。

不管怎样-既然已经删除了migration.rb文件,我很想知道我是否以某种方式破坏了我的RAILS环境(rails 3.1,ruby 1.8.7)。如果是这样,我可以采取哪些解决方案?

提前谢谢了...

最佳答案

当您键入不存在的迁移名称作为销毁命令的参数时,也会发生这种情况

$rails migration destroy non-existing-migration-name

invoke    active_record
remove    migration.rb

但是我认为这是无害的。

10-06 14:16