Как Rails Devs обрабатывают проблемы со значением модели / по умолчанию после запуска? - PullRequest
0 голосов
/ 19 ноября 2010

Мне нужны советы по следующим вопросам:

  1. У вас есть приложение, работающее с клиентами и реальными данными
  2. При разработке новых функций необходимо добавить столбецскажем, таблица проектов
  3. Этот новый столбец является идентификатором UID некоторого типа, который генерируется моделью с использованием before_save

Все это прекрасно работает для новых проектов, продвигающихся вперед.Но все существующие проекты для этого столбца равны нулю, и все ломается.

Как вы справляетесь с ним в мире Rails?

Спасибо

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Вы можете просто создать задачу rake, которая вытягивает все проекты без UID и одного для каждого проекта.

После запуска миграции запустите задачу.Теперь все ваши проекты должны иметь UID.

2 голосов
/ 19 ноября 2010

Я думаю, что это должно быть обработано в сценарии миграции, а не в задаче Rake.

Если я правильно понимаю, это нужно будет выполнить только один раз, когда столбец добавляется в исторические записи. На мой взгляд, скрипт миграции не должен оставлять приложение с поврежденным набором данных. Миграции предназначены не только для изменения схемы.

Вот пример:

def self.up
  change_table :projects do |t|
    t.integer 'new_column'
  end

  Project.reset_column_information

  Project.all.each do |project|
    project.new_column = some_value
    project.save
  end
end

Метод reset_column_information позволяет Rails узнать о новом столбце, который вы только что добавили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...