7

我不确定这是否是一个错误,或者这是否真的删除了一个 migration.rb 文件。我使用 generate 创建了以下迁移:

$ rails generate migration add_delta_to_submissions

    invoke  active_record  
    create    db/migrate/20111020175649_add_delta_to_submissions.rb  

然后我意识到我忽略了包含任何列,所以我在控制台中使用了向上箭头并用破坏覆盖了生成:

$ 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  

我意识到我可能不应该将向上箭头用于像 GENERATE 和 DESTROY 这样易变的命令(吸取了教训!),但是该命令返回并指出它删除了 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 添加到单词 migration(或 DESTROY 之后的任何单词)。好像有点危险……

不管怎样 - 我很想知道我是否已经以某种方式破坏了我的 RAILS 环境(rails 3.1,ruby 1.8.7),因为已删除了 migration.rb 文件。如果是这样 - 我有什么解决这种情况的选择?

提前谢谢了...

4

3 回答 3

2

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

$rails migration destroy non-existing-migration-name 

invoke    active_record
remove    migration.rb

但我认为它是无害的。

于 2012-11-30T18:00:22.887 回答
1

你的系统上有 git 吗?今天也发生了同样的事情,我跑了:

git diff | grep migration

我的系统上什么都没有。我搜索了该文件,但在我的任何 Rails 3.1 项目中仍然找不到任何 migration.rb。大概可以无视它而没有任何伤害?

于 2011-12-15T03:59:32.677 回答
0

同样的事情发生在我身上。

看起来 ActiveRecord 中有一个migration.rb文件,虽然您可以扩展 ActiveRecord::Base,但我不确定您是否可以从您的 rails 项目目录中的某个位置访问这些文件。

看起来有一些手动删除迁移文件而不是通过自动 rails destroy 命令删除迁移文件的先例。

于 2013-01-09T01:53:24.420 回答