我的环境->Ruby 1.9.2和Rails v3.0.5
我注意到rake db中有一个奇怪的模式:重置。根据rails的源代码,rake db:reset将=>db:drop、db:create和db:migrate。https://github.com/rails/rails/blob/v3.0.5/activerecord/lib/active_record/railties/databases.rake#L159
设置:我的一个迁移文件有Model.create语句来填充一些数据(请原谅,我不是在这些迁移中放入数据填充代码的人:)..)
案例1:当我手动执行这些步骤时,我的意思是一个接一个地删除、创建和迁移——这些语句会填充表中的数据。
情况2:当我只进行rake db:reset时,模式设置正确。但是数据没有进入数据库。执行db:reset跳过create/update语句。。我已经试过好几次了,以确保我所做的步骤没有错误。我仍然会有这种行为。
这里出了什么问题?
我认为您在源代码中读错了一行。正如我读到的:
db:migrate:reset
#=>[:drop, :create, :migrate]
db:reset
#=>[:drop, :setup]
因此,db:reset
只是创建表并设置迁移,就好像它们已经运行过一样,而没有实际运行它们。db:migrate:reset
实际上运行每个迁移。
我以前也遇到过同样的问题,但我运行的是3.0.3,结果发现,不知怎么的,我通过更改迁移文件而不运行迁移(忘记了这件事或其他什么),把迁移搞砸了。。。我将从检查这些文件开始