Migration: Adding/Removing columns are now much easier


You may have noticed by now, that in Rails 2.0 changeset 7422, you can specify columns you want to add/remove in your migration by passing attribute:type pairs to the migration generator.

For example, lets assume that we need to add a column ‘role’ in users table(User model). In this case generate a migration like:

script/generate migration AddRoleToUser role:string

Output:

class AddRoleToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :role, :string
  end

  def self.down
    remove_column :users, :role
  end
end

Here AddRoleToUser plays the main role. ‘Add’ specifies the we want to add column(s) and ‘User’ separated by ‘To’ specifies the table.

Similarly, if we need to remove a column ‘role’ :

 script/generate migration RemoveRoleFromUser role:string

Output:

class RemoveRoleFromUser < ActiveRecord::Migration
  def self.up
    remove_column :users, :role
  end

  def self.down
    add_column :users, :role, :string
  end
end

Here RemoveRoleFromUser plays the main role. ‘Remove’ specifies the we want to remove column(s) and ‘User’ separated by ‘From’ specifies the table.

Isn’t it cool?

Sponsors

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts
Git – Fast Version Control System
Ajax based online ruby API documentation
If my code or post helps you then please recommend me at workingwithrails.com by clicking on button below:
Recommend Me

Reader Comments

The auto_migration plugin already does this. But instead you edit one file (schema.rb). Good extraction though.

[...] Adding/Removing columns are now much easier [...]

Da nu Nahn

Подскажите шооблончег под Wordpress 2.6.2, чтобы был похож на ваш webonrails.com.

Заранее благодарю)

Cool ;)

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.