часто миграции подходят лучше всего и не могут быть заменены отдельным скриптом. Представьте себе следующий сценарий: приложение уже используется с живыми данными; столбец кода содержит код в форме «name-zip_code» (да, я знаю, что это некрасиво, но это случается), и вы хотите разделить его на два столбца, «name» и «zip_code», избавляясь от « code 'column.
def self.up
add_column :companies, :zip_code, :integer
add_column :companies, :name, :string
Company.reset_column_information
Company.find(:all).each do |company|
name, zip_code = company.code.split('-')
company.update_attributes(:name => name, :zip_code => zip_code)
end
remove_column :companies, :code
end
в этом случае столбец кода нельзя удалить до передачи данных в столбцы имени и почтового индекса.