FrostLucker/depot2 — comment on commit 0eeedee24262ecbc332ea3902f4483f2574f281f
File: db/migrate/20111014140620_combine_items_in_cart.rb line 32
By gotva:

Знаю что этот код из книги.
Вопрос:
Что произойдет если LineItem изменяться и будет удалена quantity или будет добавлена обязательное поле?
хорошо если миграция только перестанет изменять данные, а не будет возвращать 500

А что если в процессе разработки модель Cart или LineItem будет удалена или переименована - тогда миграция точно будет возвращать 500 ошибку. И приложение невозможно будет развернуть без пасов руками.

Итого: изменять данные в миграциях очень плохая практика. Если надо внести изменения в данные то лучше создавать rake задачу, которую легко поддерживать в актуальном состоянии.
Если ну уж очень надо изменять данные в миграции то надо НЕ привязываться к моделькам а писать SQL код напрямую в миграцию.