2012-07-19 258 views
1

我使用MySQL作为数据库在我的应用程序,如果我想要一个新表添加到它,我可以使用迁移,说 导轨产生迁移名称:字符串年龄:整数Ruby on Rails的数据库迁移

或者只是在mysql中创建一个新表。 他们两个有什么区别吗?

回答

4

是的,有很大的差异。你不应该直接在数据库中创建一个表格,除非你有充分的理由(例如它不直接影响你的Rails应用程序)。

如果你在mySQL中创建一个表格,那么你将可以访问它创建一个匹配模型,但是,当您部署数据库时,还需要对生产数据库进行相同的更改。这意味着有一个额外的部署步骤很容易被遗忘。如果您有多个人参与该项目,或者您正在使用多台机器,则这也适用。

直接创建表的另一个问题是您的数据库没有版本。如果您使用迁移,那么您可以随意在数据库版本之间切换。你的迁移中有东西是否破坏你的应用简单回滚到以前版本使用rake db:rollback

第三个含义是您的db/schema.rb文件不会反映数据库。这会阻止您在日后倾销您的计划。如果你想从mySQL转换到Postgres,你会发现事情非常困难,而不使用迁移。

0

当您通过迁移创建表时,schema.rb文件会更新以反映新表的添加。

迁移是首选路由,因为您只需运行耙子任务rake db:migrate并在开发,测试和生产环境中创建所有表,而不是移植数据库。

你可以在这里的官方文档阅读更多关于迁移 - http://guides.rubyonrails.org/migrations.html