我不确定这是否是错误或是否确实删除了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
但是我认为这是无害的。