Question

If I change my mind about how I store Model data, how might I add new columns and migrate existing data over?

For example, would the following be appropriate:

class AddPropertyAAndPropertyBToOwner < ActiveRecord::Migration
  def change
    add_column :owners, :property_a, :string
    add_column :owners, :property_b, :string

    # Now I need to migrate the existing 40 records
    # populating the new columns from an existing one
    # Owner.all.each do |o|
    #   original = o.original_property
    #   o.property_a = original.match(/foo/).captures.first
    #   o.proptery_b = original.match(/bar/).captures.first
    #   o.save
    # end
  end
end
Was it helpful?

Solution

Yes, but you should do Owner.reset_column_information first

I mean before updating the data.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top