In Ruby, usually if you want to alter the table which you created using the command Eg. "bundle exec rake db:create_migration NAME=create_games", and then "bundle exec rake db:migrate", you need to create a new migration, where you can add or change the columns.
But there is another way how you can alter the table without creating a new migration.
Check the migration status by running below in your terminal.
bundle exec rake db:migrate:status
This will show you status of all migrations you created.
If the status is up, that means this migration is active: it's been run, and has updated the database successfully!
database: db/development.sqlite3
 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20210719113216  Create games
   up     20210719113221  Create reviews
   up     20221110080300  Create users
Now, for eg. if you want to change the games table , you need run the command below, where VERSION= 'Migration ID' from the status.
rake db:migrate:down VERSION=20210719113216
database: db/development.sqlite3
 Status   Migration ID    Migration Name
--------------------------------------------------
  down    20210719113216  Create games
   up     20210719113221  Create reviews
   up     20221110080300  Create users
This will change the status from active to inactive (down), plus it will remove the table from database and schema too, 
Check your schema file, there is no games table - 

Now you can edit the table in the create_games migration, save and run-
bundle exec rake db:migrate
This will create a new table with all the changes in the database and schema.
              
    
Top comments (0)