Rails/Rake Migrations - Newbie Question


I have a problem understanding Rails/Rake migrations.

For example let's say I have a migrate-script like this:

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :name
      t.string :username
      t.string :password
      t.string :email

    User.create :name=>"John
Smith", :email=>"js@fakedomain.com", :username=>"js", :password="jsRules!"

  def self.down
    drop_table :users

If I do a migration with db:reset it will update all tables, DELETE
EVERYTHING, and then insert John Smith.

However, let's say I want to add a

t.string :secret_answer

to that model, and migrate it, what do I use?

I would like to keep all data already in DB and just have rake add one
column to the table.

I tried migrate:redo, migrate.up etc. The latter even requires a
Version value. What do I enter here?

Now this is obviously a very noobish question, but maybe one of you
can clarify.

FYI, I'm using latest RoR with Aptana on Windows7 and mySQL as DB-


To apply migrations that have not already been applied use
rake db:migrate

http://guides.rubyonrails.org/ has a guide on migrations, but start
with Getting Started if you have not already worked through that.
Then work through the others.


Colin, Thanks.

You know, I first looked at Rails one year ago and knew this. But
somehow I forgot it. Thanks for pointing knucklehead-me back to the
basics. :slight_smile:

I basically create new migrations and then db:migrate works like a