0

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

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

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

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

4

1 回答 1

1

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

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

这样做的好处是,它可以让您轻松地将相同的更改应用到不同的环境(开发、测试、生产、登台或整个开发团队)并保持同步,它鼓励您随时保持可逆可能,因此您可以在需要时保持一定程度的自由来回迁移。

还有一件事:听起来您将连续进行许多重大更改。确保在开始之前备份原始数据库,并在单独环境中针对简化的测试集彻底测试您的工作,然后再针对真实数据库运行它!

于 2013-11-14T15:41:49.903 回答