2013-11-14 100 views
0

现在我正在更新Rails应用程序,并且数据库有一些问题。它也正在从MySQL转换到PostgreSQL。Rails更新旧数据库

有3列用于跟踪一个时间值。设施在星期一开放的时间被记录为monday_open_hour,monday_open_minute,monday_open_ampm。我想将这些合并成一个时间字段。

还有几个字段只用于3000多条记录中的1%,所以我想将它们分成单独的表格。

这样做的最好方法是什么?我想它可能可以在SQL中用某种存储过程/游标完成。有没有办法用Ruby/Rails做到这一点?

回答

1

处理增量数据库更改的Rails方法是使用migrations。即使您正在与团队合作,迁移也可以让您以有序的方式将增量更改应用于模式或数据库内容。对于常见任务,如创建和删除表,重命名列以及类似的简单事务,都有很好的助手,但是如果需要的话,您可以使用任意SQL(尽管请注意,这很可能会将您与当前数据库联系起来,并进一步行动更困难)。

基本上,您可以使用rails generate migration ConsolidateDateColumns(例如)生成新的迁移。这将在db/migrate目录中为您创建一个模板;请参阅Rails Guides entry开始编写它们。当你准备好应用它时,运行rake db:migrate

这样做的好处是它可以让您轻松地将相同的更改应用于不同的环境(开发,测试,生产,分期或跨开发团队)并保持同步,并鼓励您尽可能保持事物可逆,所以如果需要的话,你可以保持一定程度的自由来回移动。

还有一件事:听起来你会在快速继承中做很多重大改变。确保在开始之前对原始数据库进行备份,并在针对真实事物运行之前,在单独的环境中针对缩减的测试集彻底测试您的工作!

+0

感谢您指点我正确的方向。这个答案加上[在Rails迁移中迁移数据]的答案(http://stackoverflow.com/questions/1885242/migrating-data-in-a-rails-migration)帮助我开始了。 – Shaun