Migration for change or remove table column

Hi:

I made a migration to create a table and all the columns. Going ahead with the development, I realize that I need to change the type of one column from binary to string (to storage photos paths, instead of photos themselves).

I tried "script/generate migration RemovePhotoFromPerson photo:binary" (this creates appropriate migration file successfully, remove_column and add_column at self.up and self.down respectively), but rake db:migrate does nothing :S I also have try manually changing column type with "script/generate migration ChangePhotoOnPerson", then editing "db/migrate/ 00X_change_photo_on_person.rb", adding:

  def self.up     change_column :people, :photo, :string   end

  def self.down     change_column :people, :photo, :binary   end

But still, nothing seems to happen.

Question is: how do I remove/change this column?.

Hi:

I made a migration to create a table and all the columns. Going ahead with the development, I realize that I need to change the type of one column from binary to string (to storage photos paths, instead of photos themselves).

Sounds like you've already ran the migration. Once you've done so,
rails won't notice changes made to the migration and rails db:migrate
will do nothing. Easiest way out is probably just to edit the schema_info table and set
the version to the one before this migration.

Or run rake db:migrate:redo after commenting out all actions in self.down. Note that if you're using not rails 2.1 then migrate to version below current and then migrate to current version again.

Wow Frederick!, you were completely right!. The value of schema_info was wrong (too much generate/destroy I suppose :slight_smile: ). The migration has work like a charm, so thank very much!.

Cheers, Ibon.