Навигация
видение данных с помощью миграции
изменения в схеме влекут за собой перемещения данных. Например, в на проекта могла быть схема, в которой цена хранилась в виде числа с плаваю-i запятой. Но позже, после столкновения с проблемой округления, возникло
ае хранить цены в виде целого числа центов или копеек. Ьли миграция уже использовалась для загрузки данных в базу, проблем не 1ет: стоит лишь внести в ее файл незначительные изменения и вместо вида 12,34 загружать в ценовой столбец 1234. Но если по каким-то ш это не представляется возможным, то можно применить преобразова-гшутри миграции. Одним из способов такого преобразования может стать ум-*е существующего значения столбца на сто перед тем, как сменить тип дан-i столбца.
ChangePriceToInteger < ActiveRecord::Migration
*ef self.up
Product.update_all("price = price * 100" ) change_column :products, :price, :integer
end
aef self.down
change_column :products, :price, :float Product.update_all("price = price / 100.0" )
etd
Заметьте, что метод down при откате миграции производит деление только по-; возвращения столбцу его прежнего типа данных.