当我跑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表示什么?
如果必须,我可以删除哪一个?
答案 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
来电up
,db:rollback
来电down
。在最新版本的rails中,有change
可以同时处理这两个版本。
关于删除...这些天我没有做很多活跃的记录,但我认为你可以随心所欲地对你的文件做任何事情。我不认为删除重复文件会造成任何伤害,如果确实如此..那么,你使用源代码控制,对吗? :)