2011-06-15 80 views
4

我的环境 - > Ruby 1.9.2和Rails v3.0.5rake db:reset没有填充数据

我注意到rake db:reset中有一个奇怪的模式。根据rails源代码,rake db:reset will => 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:当我只是耙db:重置,架构设置正确。但数据没有进入数据库。是否db:reset skip创建/更新语句..我已经尝试了几次,以确保在我的步骤中没有任何错误。我仍然得到这种行为。

这里怎么回事?

+0

您可以发布您的迁移吗? – David 2011-06-15 02:57:33

回答

13

我想你在阅读源代码中的错误行。当我读它:

db:migrate:reset#=>[:drop, :create, :migrate]

db:reset#=>[:drop, :setup]

所以db:reset刚刚创建表和设置,就好像他们已经运行迁移,而不实际运行它们。 db:migrate:reset实际上运行每个迁移。

0

我以前有同样的问题,但我运行3.0.3,事实证明,我设法通过更改迁移文件,而不是运行迁移(忘了它或某事)来搞砸迁移。 。我将从检查这些文件开始