Whenever you use a Model class in a migration, you should define it *within* the migration class. This avoids problems related to the state of the model.
For example:
class AddProductSource < ActiveRecord::Migration class Product < ActiveRecord::Base end
def self.up add_column :products, :source, :string Product.reset_column_information Product.update_all('source = "something"') add_index :products, [ :source, :vendor, :code ], :name => 'products_source_index' end
def self.down remove_index :products, :name => 'products_source_index' remove_column :products, :source end end
You also need to call the .reset_column_information to force ActiveRecord to notice the changes that the migration has made to the database.
Try putting a "class State < ActiveRecord::Base; end" inside your migration 20 and see if that clears things up.
-Rob
Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com