我可以删除迁移文件吗?

时间:2012-07-13 06:58:19

标签: ruby-on-rails ruby-on-rails-3 migration rake

当我跑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。

Up和Down表示什么?

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

2 个答案:

答案 0 :(得分:0)

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

class CreateMicroposts< ActiveRecord::Migration

rake db:migrate:status不会检查迁移文件的状态。它告诉您在运行rake db:migrate时将应用哪些迁移。上/下标签几乎不言自明:它告诉您是否将通过up方法或down方法应用迁移。迁移时运行up方法,回滚迁移时运行down方法。您可以进一步阅读有关Rails迁移here的信息。

答案 1 :(得分:0)

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

关于删除...这些天我没有做很多活跃的记录,但我认为你可以随心所欲地对你的文件做任何事情。我不认为删除重复文件会造成任何伤害,如果确实如此..那么,你使用源代码控制,对吗? :)