2

当我跑步时,bundle exec rake db:test:prepare我得到以下信息:

rake aborted!
Multiple migrations have the name CreateMicroposts

为了检查我的迁移文件的状态,我跑了

rake db:migrate:status

并得到:

状态迁移 ID 迁移名称 ------- --------------- -----

up 20120616205407 创建用户

up 20120622103932 为用户邮箱添加索引

up 20120622114559 为用户添加密码摘要

up 20120628095820 为用户添加记忆令牌

up 20120704123654 为用户添加管理员

down 20120706103254 创建微博

up 20120707073410 创建微博

如您所见,我有两个名称完全相同且代码完全相同的迁移文件。只是它们的状态不同,即 Up 和 Down。

向上和向下意味着什么?

如果必须,我可以删除哪一个?

4

2 回答 2

0

问题是您有两个包含标头的不同迁移文件

class CreateMicroposts< ActiveRecord::Migration

rake db:migrate:status 不会检查迁移文件的状态。它告诉您如果运行 rake db:migrate 将应用哪些迁移。up/down 标签几乎是不言自明的:它告诉您迁移是通过 up 方法还是 down 方法应用。迁移时运行 up 方法,回滚迁移时运行 down 方法。您可以在此处进一步了解 Rails 迁移。

于 2012-07-13T07:04:39.117 回答
0

up是“进化”时调用的方法(即迁移到新模式),down而是“回归”时调用的方法(即迁移到较旧的模式版本,因为您的更改之一不适合您)。db:migrate来电updb:rollback来电down。在最新版本的 rails 中,change可以同时处理两者。

至于删除......这些天我不怎么做activerecord,但我认为你可以自由地对你的文件做任何你想做的事情。我不认为删除重复文件会造成任何伤害,如果确实如此.. 好吧,您使用源代码控制,对吗?:)

于 2012-07-13T07:06:16.813 回答