After installing devise MODEL User i got this.
class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.trackable
# t.encryptable
# t.confirmable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
# t.token_authenticatable
t.timestamps
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :confirmation_token, :unique => true
# add_index :users, :unlock_token, :unique => true
# add_index :users, :authentication_token, :unique => true
end
def self.down
drop_table :users
end
end
Now if i do rake db:migrate the users table will be created.
How can i revert this migration, i.e. how can I delete the users table using rake again ?
For rails 4+ run:
rake db:migrate:down VERSION=<version>
where <version>
is the version number of your migration file you want to revert.
eg. if you want to revert a migration with file name 3846656238_create_users.rb
rake db:migrate:down VERSION=3846656238
for rails 3 you need to run several times (it will go back one migration each time):
rake db:rollback
I believe there are three options available for reverting migrations (they also overlap):
Roll down the most recent migration:
rake db:migrate:down
# Rails 2 only.
Roll down a number(n) of recent migrations:
rake db:rollback STEP=n
Roll down to a previous, specific version:
$ rake db:migrate:down VERSION=nnn
# Rails 3 (provide version number also).
Version Number means the SHA(Secure Hash Algorithm) for the commit which is a long hexadecimal number which looks something like 886af3194768917c78e... You can see it by doing git log
You can see these commands (and others) with their descriptions by using rake -T db:
which for rails 3.2 includes:
rake db:migrate # Migrate the database (options: VERSION=x, VERBOSE=false)
rake db:migrate:status # Display status of migrations
rake db:rollback # Rolls the schema back to the previous version (specify steps w/ STEP=n)
You can do rollback and specify how many last migrations will be rollbacked, e.g.
rake db:rollback STEP=3
for 3 last migrations.
As an new programmer (or to other new programmers)
rake db:rollback
works about half the time. I start there.
If not, rake db:migrate:down VERSION=3846656238
plug in VERSION for the version number of your migration file you want to revert.
rake db:migrate:redo
It will undo and reapply the last migration.
For rails 5 we can use rails command instead of rake
rails db:migrate:down VERSION=<version>
example
rails db:migrate:down VERSION=20170330090327
Run this command in your terminal:
rake db:migrate:status
or
bundle exec rake db:migrate:status
It shows the status, migration ID's, migration name for all migration we ran previously. select your migration id (i.e your version number) and put that id in the following command after version= ,,, and press enter
bundle exec rake db:migrate:down VERSION=