我在我的应用程序中使用mysql作为数据库,如果我想添加一个新表,我可以使用migrate,比如说 rails生成迁移名称:string age:integer
或者只是在mysql中创建一个新表。 两个人之间有什么区别吗?
答案 0 :(得分:4)
是的,存在巨大差异。除非你有充分的理由(例如它不直接影响你的rails应用程序),否则你不应该直接在数据库中创建表。
如果在mySQL中创建表,那么在创建匹配模型时可以访问它,但是,在部署数据库时,还需要对生产数据库进行相同的更改。这意味着部署的额外步骤很容易被遗忘。如果您有多个人在使用该项目,或者您正在使用多台计算机,也可以这样做。
直接创建表的另一个问题是您的数据库没有版本化。如果使用迁移,则可以随意在数据库版本之间切换。迁移中的某些内容会破坏您的应用程序吗使用rake db:rollback
第三个含义是您的db/schema.rb
文件不会反映数据库。这将阻止您在以后转储您的方案。如果你想从mySQL切换到Postgres,你会发现在不使用迁移的情况下非常困难。
答案 1 :(得分:0)
通过迁移创建表时,schema.rb
文件会更新以反映新表的添加。
迁移是首选路由,因为您只需运行rake任务rake db:migrate
并在开发,测试和生产环境中创建所有表,而不是移植数据库。
您可以在此处的官方文档中了解有关迁移的更多信息 - http://guides.rubyonrails.org/migrations.html