Bird
Raised Fist0
Ruby on Railsframework~5 mins

Adding and removing columns in Ruby on Rails - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What command do you use to add a new column to an existing table in Rails?
You create a migration with rails generate migration AddColumnNameToTableName column_name:data_type and then run rails db:migrate.
Click to reveal answer
beginner
How do you remove a column from a table in Rails migrations?
Use remove_column :table_name, :column_name inside a migration and then run rails db:migrate.
Click to reveal answer
beginner
What is the purpose of the change method in a Rails migration?
The change method defines what changes to make to the database schema. Rails can automatically reverse these changes when rolling back.
Click to reveal answer
intermediate
Why should you avoid adding columns directly in the database without migrations in Rails?
Because migrations keep your schema consistent and track changes, making it easier to share and rollback changes safely.
Click to reveal answer
beginner
What data types can you specify when adding a column in Rails migrations?
Common types include :string, :text, :integer, :boolean, :datetime, and :float.
Click to reveal answer
Which Rails command generates a migration to add a column?
Arails generate migration AddAgeToUsers age:integer
Brails add column age to users
Crails db:add_column age users
Drails create column age users
How do you remove a column named 'email' from the 'customers' table in a migration?
Aremove :customers, :email
Bremove_column :customers, :email
Cdelete_column :customers, :email
Ddrop_column :customers, :email
What happens if you run rails db:rollback after adding a column with a migration?
AThe migration file is deleted
BNothing happens
CThe entire table is deleted
DThe added column is removed from the table
Which method inside a migration allows Rails to automatically reverse changes?
Adown
Bup
Cchange
Dmigrate
Why is it important to use migrations for schema changes in Rails?
ATo keep schema changes tracked and reversible
BTo speed up the app
CTo avoid writing Ruby code
DTo prevent database backups
Explain the steps to add a new column to an existing table in Rails using migrations.
Think about how Rails tracks database changes safely.
You got /3 concepts.
    Describe how Rails migrations help manage database schema changes like adding or removing columns.
    Consider why direct database edits can be risky.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the primary purpose of adding a column in a Rails migration?
      easy
      A. To rename an existing table
      B. To delete old data from the database
      C. To create a new database table
      D. To store new types of data in an existing database table

      Solution

      1. Step 1: Understand what adding a column means

        Adding a column means extending an existing table to hold more data fields.
      2. Step 2: Identify the purpose of adding columns in Rails migrations

        It allows storing new types of data without creating a new table or deleting data.
      3. Final Answer:

        To store new types of data in an existing database table -> Option D
      4. Quick Check:

        Adding columns = storing new data [OK]
      Hint: Adding columns means expanding tables to hold new data [OK]
      Common Mistakes:
      • Confusing adding columns with creating tables
      • Thinking adding columns deletes data
      • Mixing up adding columns with renaming tables
      2. Which of the following is the correct syntax to add a column named age of type integer to the users table in a Rails migration?
      easy
      A. add_column :users, :age, :integer
      B. add_column users, age, integer
      C. add_column(:users, :age, integer)
      D. add_column(:users, age, :integer)

      Solution

      1. Step 1: Recall the correct method signature for adding a column

        The method is add_column(table_name, column_name, type) with symbols for names.
      2. Step 2: Check each option for correct syntax

        add_column :users, :age, :integer uses symbols and correct commas: add_column :users, :age, :integer.
      3. Final Answer:

        add_column :users, :age, :integer -> Option A
      4. Quick Check:

        Correct syntax uses symbols and commas [OK]
      Hint: Use symbols and commas: add_column :table, :column, :type [OK]
      Common Mistakes:
      • Omitting colons before symbols
      • Using parentheses incorrectly
      • Missing commas between arguments
      3. Given this migration code:
      class AddNicknameToUsers < ActiveRecord::Migration[7.0]
        def change
          add_column :users, :nickname, :string
        end
      end

      What will happen after running rails db:migrate?
      medium
      A. An error will occur because the migration is missing a remove_column
      B. The users table will be deleted
      C. A new column 'nickname' of type string will be added to the users table
      D. The nickname column will be removed from the users table

      Solution

      1. Step 1: Understand the migration code

        The migration adds a string column called nickname to the users table inside the change method.
      2. Step 2: Know what rails db:migrate does

        It applies the change method, adding the new column to the database table.
      3. Final Answer:

        A new column 'nickname' of type string will be added to the users table -> Option C
      4. Quick Check:

        add_column in change adds the column [OK]
      Hint: add_column inside change adds the column on migrate [OK]
      Common Mistakes:
      • Thinking remove_column is required to add columns
      • Confusing add_column with deleting tables
      • Assuming migration deletes columns by default
      4. You wrote this migration to remove the birthdate column from users:
      class RemoveBirthdateFromUsers < ActiveRecord::Migration[7.0]
        def change
          remove_column :users, :birthdate
        end
      end

      When running rails db:migrate, you get an error. What is the likely cause?
      medium
      A. remove_column requires the column type as a third argument in change method
      B. remove_column cannot be used inside change method
      C. The migration class name is incorrect
      D. You must use add_column to remove a column

      Solution

      1. Step 1: Recall remove_column syntax in change method

        When using remove_column inside change, you must provide the column type as the third argument.
      2. Step 2: Check the migration code

        The code misses the column type, causing an error during migration.
      3. Final Answer:

        remove_column requires the column type as a third argument in change method -> Option A
      4. Quick Check:

        remove_column in change needs column type [OK]
      Hint: Provide column type when removing columns in change method [OK]
      Common Mistakes:
      • Omitting column type argument
      • Trying to remove columns with add_column
      • Misnaming migration class
      5. You want to add a status column to orders with default value 'pending' and then remove the old_status column safely. Which migration code correctly does this?
      hard
      A. def change add_column :orders, :status, :string remove_column :orders, :old_status end
      B. def change add_column :orders, :status, :string, default: 'pending' remove_column :orders, :old_status, :string end
      C. def change add_column :orders, :status, :string, default: 'pending' remove_column :orders, :old_status end
      D. def up add_column :orders, :status, :string, default: 'pending' remove_column :orders, :old_status, :string end def down remove_column :orders, :status add_column :orders, :old_status, :string end

      Solution

      1. Step 1: Understand adding with default and removing columns safely

        Adding a column with default works in change. Removing a column in change requires the type for reversibility.
      2. Step 2: Analyze options for correctness and safety

        def change add_column :orders, :status, :string, default: 'pending' remove_column :orders, :old_status, :string end uses def change add_column :orders, :status, :string, default: 'pending' remove_column :orders, :old_status, :string end with default on add and type on remove for safe migration and rollback.
      3. Final Answer:

        def change add_column :orders, :status, :string, default: 'pending' remove_column :orders, :old_status, :string end -> Option B
      4. Quick Check:

        change method with type for remove and default for add [OK]
      Hint: Use change with column type for safe remove_column [OK]
      Common Mistakes:
      • Omitting column type when removing
      • Not providing default value when needed
      • Using change method without rollback safety
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard