Метод Rails для обработки инкрементных изменений базы данных заключается в использовании migrations. Миграции позволяют применять инкрементные изменения к вашей схеме или содержимому базы данных упорядоченным образом, даже когда вы сотрудничаете с командой. Есть хорошие помощники для выполнения общих задач, таких как создание и удаление таблиц, переименование столбцов и простейшие вещи, подобные этому, но если вам нужно это сделать, вы можете отказаться от произвольного SQL (хотя, помните, что это скорее всего привяжет вас к вашей текущей базе данных, и сделать дальнейшие шаги более трудными).
В принципе, вы можете создать новую миграцию с помощью rails generate migration ConsolidateDateColumns
(например). Это создаст шаблон для вас в каталоге db/migrate
; см. Rails Guides entry, чтобы начать писать. Когда вы будете готовы применить его, запустите rake db:migrate
.
Преимущества этого способа заключаются в том, что он позволяет легко применять те же самые изменения в разных средах (разработка, тестирование, производство, постановка или в рамках вашей команды разработчиков) и поддерживать их в синхронизации, и это побуждает вас держите вещи в обратном порядке, когда это возможно, поэтому вы сохраняете некоторую степень свободы для перехода туда и обратно, если вам нужно.
Еще одна вещь: похоже, что вы будете совершать большие изменения в быстрой последовательности. Перед тем, как начать, убедитесь, что вы берете резервную копию исходной базы данных и тщательно проверяете свою работу с уменьшенным набором тестов в отдельной среде, прежде чем запускать ее против реальной вещи!
Спасибо, что указал мне в правильном направлении. Этот ответ плюс ответ на [Миграция данных в Rails Migration] (http://stackoverflow.com/questions/1885242/migrating-data-in-a-rails-migration) помогли мне начать. – Shaun