当我阅读Rails书籍时,每次创建新数据库时,请始终关注db:migrate
。
rails generate scaffold school
rake db:migrate
在控制台视图中,我看到第一行,Rails创建了一些文件,没问题。但在第二行,我看到Rails并没有真正改变任何东西。我已经查看了Rails几乎创建的一些文件,并且看不到任何变化。
那么,第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:)