我在学习rails,并且遇到了迁移。似乎每次我想要编辑一个模型,我都需要添加一个迁移脚本,尽管我还没有投入生产。Rails - 从模型生成迁移脚本
你可以编辑你的模型,添加你需要的所有属性,并且在发布之前,是否有自动生成的迁移脚本?
谢谢!
我在学习rails,并且遇到了迁移。似乎每次我想要编辑一个模型,我都需要添加一个迁移脚本,尽管我还没有投入生产。Rails - 从模型生成迁移脚本
你可以编辑你的模型,添加你需要的所有属性,并且在发布之前,是否有自动生成的迁移脚本?
谢谢!
我同意迄今为止的意见。迁移的想法是为了简化流式调整数据模式以适应您的应用程序,因为您希望添加新字段。这是一个简单而美观的系统。
因此,您可以(也应该)使用rails generate migration...
,因为它不仅在许多常见情况下生成正确的代码,还会跟踪哪些迁移已在不同版本的数据库中运行。见http://guides.rubyonrails.org/migrations.html#creating-a-migration
常见的工作流程可能是这样的:
bundle exec rake db:migrate
运行 - 您的数据库架构将更新rails generate migration AddBirthdateToUser birthdate:date
。对于一些简单的操作,如添加列,索引等,将生成完整的迁移代码;在其他情况下,您需要编写迁移。完成后,运行迁移。bundle exec rake db:rollback
),修复迁移并重新运行它。rake db:migrate
。如果你在一个团队中,并且其他开发人员已经检查过迁移,他们的意志也会运行。现在你的代码和数据模式是同步的。有任何生产部署过程中运行的迁移没有伤害(我恭敬地上述评论不同意) - 你应该拥抱转变观念,即使这样的变化(可在其他环境中难以置信的难度)是日常Rails生活中的正常部分!
如果您使用rails 3+,您可能需要考虑使用DataMapper而不是ActiveRecord。它允许您在模型中定义数据模型,而不是多个迁移文件。据我所知DataMapper可以让你从变化中产生迁移。
这是在更广泛的ORM社区中经常使用的经过验证和信任的模式。
手动编写迁移脚本确实不难。 – 2012-03-14 15:45:01
是真实的,但对于我所有的变化(在开发过程中,我有很多变化),我需要不少AddXToY迁移脚本...... – Karan 2012-03-14 15:48:42
好吧,我想我可以编辑原始迁移脚本,然后删除并重新加载数据库 – Karan 2012-03-14 15:49:28