Rails - 从模型生成迁移脚本

10
我正在学习Rails,遇到了迁移。似乎每次我想编辑一个模型,即使我还没有进入生产阶段,我也需要添加迁移脚本。
您能否编辑您的模型,添加所有所需的属性,并在发布之前自动生成迁移脚本?
谢谢!

1
手动编写迁移脚本并不太难。 - Sergio Tulentsev
2
嗯,我想我可以编辑原始迁移脚本,然后删除并重新加载数据库。 - Karan
1
到了一天的尾声,您可能并不想在生产环境中运行迁移,而是只需加载已完成的模式。 - numbers1311407
1
或者在生产之前可以“压缩”迁移脚本。 - Sergio Tulentsev
1
有趣……这是怎么工作的呢? - Karan
显示剩余2条评论
2个回答

5
如果你正在使用Rails 3+,你可能想考虑使用DataMapper而不是ActiveRecord。它允许你在模型中定义数据模型,而不是多个迁移文件。据我所知,DataMapper可以从更改中生成迁移。
这是一个经过验证的模式,常用于更广泛的ORM社区。

3
我同意迄今为止的评论。 迁移的想法是使您能够轻松地适应数据架构,以使其适合您添加新字段的应用程序。 这是一个简单而美丽的系统。
因此,您可以(也应该)使用rails generate migration ...,因为它不仅在许多常见情况下生成正确的代码,还可以跟踪在不同版本的数据库中运行了哪些迁移。请参见http://guides.rubyonrails.org/migrations.html#creating-a-migration 一个常见的工作流程可能是这样的:
创建一个新模型,例如具有像first_name、last_name和user_name这样的字段的User。 这将创建一个关联的迁移,您可以使用bundle exec rake db:migrate运行它--您的数据库架构将被更新。 您决定需要其他信息,例如出生日期,因此运行rails generate migration AddBirthdateToUser birthdate:date。对于一些简单的操作,如添加列、索引等,将生成完整的迁移代码;在其他情况下,您需要编写迁移。完成后,运行迁移。 如果您在开发过程中发现问题,例如字段类型应该是浮点数而不是整数,或者忘记添加索引,您可以回滚迁移(bundle exec rake db:rollback),修复迁移并重新运行它。 运行您的测试(将运行迁移),当所有内容在本地工作时,检查文件(包括迁移)并部署到具有自己数据库副本的QA或分段服务器中。 在分段服务器上运行rake db:migrate。如果您在团队中,并且其他开发人员已经签入了迁移,则也会运行他们的迁移。现在,您的代码和数据架构是同步的。 重复 :-) 在生产部署期间运行迁移没有任何危害(我不同意上面的评论)--您应该接受这样的变化,即使是像这样的变化(在其他环境中可能非常困难),也是Rails日常生活的正常组成部分!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接