1 maak een migratie met de naam van je nieuwe column.. in dit geval test_number in tabel Article die al test heeft
rails g migration AddTestNumberToArticle test_number:integer
rails g migration ChangeArticle
class ChangeArticle < ActiveRecord::Migration
def self.up
Article.all.each do |a|
a.test_number = a.test.to_i unless a.test_number.present?
puts "#the test_number in Article {a.id} was copied back to test"
a.save
puts "#the test in Article {a.id} was copied to test_number"
end
end
def self.down
Article.all.each do |a|
a.test_number = a.test.to_i unles a.test_number.present?
a.test = a.test_number.to_s
a.save
puts "#the test_number in Article {a.id} was copied back to test"
end
end
in self.up en self.down wordt er voor gezorgt dat beide tabellen steeds inhoud hebben. in self.down (uitgevoerd als een migratie teruggedraaid wordt met `rake db:rollback') wordt er voor gezorgt dat alle beide de columns de zelfde inhoud hebben en oude code in de app wel blijft werken.
Geef het een paar weken, mag de oude column weggegooit worden met rails g migration RemoveTestFromArticle test:string
. Doe dit echter pas als uit tests gebleken is, dat je nieuwe code 200% werkt (100% plus al je specs).
Lees het nog eens allemaal en ga het maar uitvoeren
Goed gedaan!