当我阅读 Rails 书时,每次创建新数据库时,总是遵循db:migrate
.
rails generate scaffold school
rake db:migrate
在控制台视图中,我看到第一行,Rails 创建了一些文件,没问题。但在第二行中,我看到 Rails 并没有真正改变任何东西。我查看了 Rails 几乎创建的一些文件,也没有看到任何变化。
那么,第2行的目的是什么,请告诉我。
谢谢 :)
当我阅读 Rails 书时,每次创建新数据库时,总是遵循db:migrate
.
rails generate scaffold school
rake db:migrate
在控制台视图中,我看到第一行,Rails 创建了一些文件,没问题。但在第二行中,我看到 Rails 并没有真正改变任何东西。我查看了 Rails 几乎创建的一些文件,也没有看到任何变化。
那么,第2行的目的是什么,请告诉我。
谢谢 :)
rake 将更改迁移到您的数据库中。它实际上更改了数据库模式以匹配您之前生成的脚手架模型。
没有它,您将没有一个表格可以将您的对象写入其中。或者在更改模型的情况下,表格可能与您的模型不同,从而导致错误。
当您生成模型(或脚手架模型)时,会在您的 db/migration 目录中创建一个迁移文件。它是一个纯文本文件,如果需要,您可以手动创建。这是Rails中关于数据库的迭代开发工具。每次迁移都会对系统进行一些更改。当你运行rake db:migrate
你的数据库时,给定的迁移会更新。在分布式开发的情况下,这是一个方便的工具,当一个程序员可以从存储库中签出代码,并可以在他自己的开发数据库上运行迁移。
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 脚本迁移到数据库,在上述情况下,它将创建“用户”表
如果你rake -T
从你的 Rails 应用程序根目录运行,你可以看到所有的 rake 任务
HTH :)