Rails: последняя миграция применена повторно

Иногда rake db:migrate пытается запустить миграцию, которая уже была успешно перенесена (без каких-либо ошибок). Когда я проверяю таблицу schema_migrations, повторяющейся миграции там нет.

Я заметил, что это происходит только тогда, когда я использую миграции для изменения данных в моей БД без изменения схемы БД (например, изменить все значения столбца таблицы).

У меня вопрос, в чем причина такого поведения? Является ли использование миграции для изменения данных плохой практикой в ​​Rails? Каков наилучший способ просто изменить данные БД?

Я использую рельсы 3.2.6 с postgresql.


person Nurbo    schedule 21.04.2013    source источник


Ответы (1)


я думаю, что файлы миграции предназначены для выполнения части DDL

  • создание/удаление таблицы
  • добавить/удалить столбцы
  • установить значения по умолчанию

но в течение почти 9 месяцев с рельсами я использую файл seed.rb в каталоге db для заполнения данных в db, вы можете запустить его как

    rake db:seed
person abo-elleef    schedule 21.04.2013
comment
Привет, Лиф! Спасибо! Можно ли изменить данные, например, значение всего столбца с нуля на 0, с помощью db:seed? Или это только для посева? - person Nurbo; 22.04.2013
comment
в начальном файле вы можете написать любой код, который можно написать в консоли rails, чтобы вы могли сделать Model.find(id).update_attribute(:attr_name,0) - person abo-elleef; 23.04.2013