ruby-on-rails Rails -从模型生成迁移脚本

cigdeys3  于 2023-05-30  发布在  Ruby
关注(0)|答案(2)|浏览(146)

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

4uqofj5v

4uqofj5v1#

如果你使用的是Rails3+,你可能需要考虑DataMapper而不是ActiveRecord。它允许您在模型中定义数据模型,而不是多个迁移文件。据我所知,DataMapper允许您从更改中生成迁移。
这是一种在更广泛的ORM社区中经常使用的可靠模式。

pu82cl6c

pu82cl6c2#

我同意到目前为止的评论。迁移的想法是,当您想要添加新字段时,可以轻松地调整数据模式以适应您的应用程序。这是一个简单而美丽的系统。
所以,是的,您可以(并且应该)使用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。对于一些简单的操作,如添加列、索引等,将生成完整的迁移代码;在其他情况下,您需要编写迁移。完成后,运行迁移。
  • 如果您在开发中发现问题,例如字段类型应该是float而不是integer,或者您忘记添加索引,您可以回滚迁移(bundle exec rake db:rollback),修复迁移并重新运行它。
  • 运行您的测试(它将运行迁移),当一切都在本地为您工作时,签入文件(包括迁移)并部署到QA或staging服务器,该服务器具有自己的数据库副本。
  • 在临时服务器上运行rake db:migrate。如果您在一个团队中,并且其他开发人员已经签入了迁移,那么他们的也会运行。现在,您的代码和数据模式是同步的。
  • repeat:-)

在生产部署期间运行迁移没有任何害处(我不同意上面的评论)-您应该接受这样的想法,即更改,即使是这样的更改(在其他环境中可能非常困难)也是日常Rails生活的正常部分!

相关问题