Ruby on Rails:db:migrate的目的

时间:2012-06-24 19:06:59

标签: ruby-on-rails rake

当我阅读Rails书籍时,每次创建新数据库时,请始终关注db:migrate

rails generate scaffold school
rake db:migrate

在控制台视图中,我看到第一行,Rails创建了一些文件,没问题。但在第二行,我看到Rails并没有真正改变任何东西。我已经查看了Rails几乎创建的一些文件,并且看不到任何变化。

那么,第2行的目的是什么,请告诉我。

谢谢:)

2 个答案:

答案 0 :(得分:3)

rake将更改迁移到您的数据库中。它实际上会更改数据库架构以匹配您之前生成的scaffolded模型。

如果没有它,你就没有一张桌子来写你的对象。或者在更改模型的情况下,表格可能与您的模型不同,从而导致错误。

生成模型(或脚手架模型)时,会在db / migration目录中创建迁移文件。它是一个纯文本文件,如果需要,可以手动创建。这是有关数据库的rails中迭代开发的工具。每次迁移都会对系统进行一些更改。运行rake db:migrate时,您的数据库将由给定的迁移进行更新。在分布式开发的情况下,这是一个方便的工具,当一个程序员可以从存储库中检出代码,并且可以在他自己的开发数据库上运行迁移。

答案 1 :(得分:1)

db:migrate,是告诉rails使用新更改更新数据库的命令。可以这样想吧

当你说rails generate scaffold rails会生成像模型,控制器等文件时..它会在db / migrate下创建一个文件,它有sql脚本来更新数据库。

例如:如果你运行rails generate scaffold User name:string,那么你需要一个名为users的表,其名称为'name',sql脚本将在db / migrate文件夹下生成

使用db:migrate命令,你告诉rails将新的sql脚本迁移到数据库,在上面的例子中,它将创建'users'表

如果您从rails应用程序根运行rake -T,您可以看到所有佣金任务

HTH:)