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
Step 1: Understand the migration code
The migration adds a string column called nickname to the users table inside the change method.
Step 2: Know what rails db:migrate does
It applies the change method, adding the new column to the database table.
Final Answer:
A new column 'nickname' of type string will be added to the users table -> Option C
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
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.
Step 2: Check the migration code
The code misses the column type, causing an error during migration.
Final Answer:
remove_column requires the column type as a third argument in change method -> Option A
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
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.
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.
Final Answer:
def change
add_column :orders, :status, :string, default: 'pending'
remove_column :orders, :old_status, :string
end -> Option B
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 unknownstrongwhile earning +1 Grip toward your certificate.