【发布时间】:2014-06-15 13:02:48
【问题描述】:
在旧的 Rails 应用程序中,我需要更新生产数据库中一组记录中的一个列。我不会以任何方式改变数据库的结构。我可以只编写一个针对数据库运行的 SQL 脚本,也可以编写一个 Rails 迁移来更新所有需要更改的模型。但是,这感觉不对。
对于仅修改生产数据、不更改结构的一次性数据库更新的最佳做法是什么?
【问题讨论】:
标签: mysql sql ruby-on-rails ruby
在旧的 Rails 应用程序中,我需要更新生产数据库中一组记录中的一个列。我不会以任何方式改变数据库的结构。我可以只编写一个针对数据库运行的 SQL 脚本,也可以编写一个 Rails 迁移来更新所有需要更改的模型。但是,这感觉不对。
对于仅修改生产数据、不更改结构的一次性数据库更新的最佳做法是什么?
【问题讨论】:
标签: mysql sql ruby-on-rails ruby
同rubyonrailsguide:
迁移是一种随时间推移以一致且简单的方式更改数据库架构的便捷方式。
我认为您应该有用于数据修复的脚本,因为这些是一次性修复,如果有人在其他迁移或每次测试时在本地运行迁移,等等,您不希望它们运行。迁移应该只包含以任何方式更改数据库架构的代码,而不是数据。
Rails 似乎随着时间的推移而发展,现在它表明迁移可用于添加/修改数据,来自edgeguides:
Rails 迁移功能的主要目的是发出使用一致过程修改架构的命令。迁移也可用于添加或修改数据。这在无法销毁和重新创建的现有数据库(例如生产数据库)中很有用。
【讨论】: