Bird
Raised Fist0
Ruby on Railsframework~5 mins

Creating migrations in Ruby on Rails - Quick Revision & Summary

Choose your learning style10 modes available
Recall & Review
beginner
What is a migration in Rails?
A migration is a way to change the database schema over time in a consistent and easy way. It helps create, modify, or drop tables and columns.
Click to reveal answer
beginner
How do you generate a new migration file in Rails?
Use the command rails generate migration MigrationName. This creates a new migration file with a timestamp.
Click to reveal answer
beginner
What method do you use inside a migration to create a new table?
Use the create_table method inside the change method to define a new table and its columns.
Click to reveal answer
intermediate
What does the change method do in a migration?
The change method defines the changes to apply to the database. Rails can automatically reverse these changes when rolling back.
Click to reveal answer
beginner
How do you run migrations to update the database schema?
Run rails db:migrate to apply all pending migrations and update the database schema.
Click to reveal answer
Which command creates a new migration file in Rails?
Arails migration create AddUserEmail
Brails generate migration AddUserEmail
Crails new migration AddUserEmail
Drails create migration AddUserEmail
What method inside a migration defines the database changes?
Achange
Bupdate
Cmodify
Dalter
How do you apply migrations to update the database?
Arails db:migrate
Brails db:reset
Crails db:rollback
Drails db:create
Which method creates a new table in a migration?
Amake_table
Badd_table
Cnew_table
Dcreate_table
What does Rails use to order migration files?
AAlphabetical order
BFile size
CTimestamp in filename
DRandom order
Explain how to create and run a migration to add a new column to an existing table in Rails.
Think about the command to create migration, the method to add a column, and how to apply it.
You got /3 concepts.
    Describe the purpose of the change method in Rails migrations and how it helps with rolling back changes.
    Focus on how change method works both forward and backward.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a migration in Rails?
      easy
      A. To change the database structure step-by-step
      B. To write application business logic
      C. To style the user interface
      D. To manage user sessions

      Solution

      1. Step 1: Understand what migrations do

        Migrations are used to modify the database schema in a controlled way.
      2. Step 2: Identify the correct purpose

        Changing database structure step-by-step matches the role of migrations.
      3. Final Answer:

        To change the database structure step-by-step -> Option A
      4. Quick Check:

        Migrations = Change database structure [OK]
      Hint: Migrations change database structure, not app logic or UI [OK]
      Common Mistakes:
      • Confusing migrations with application code
      • Thinking migrations handle UI or sessions
      2. Which command correctly generates a migration to add a title column of type string to the posts table?
      easy
      A. rails generate migration AddColumn posts title:string
      B. rails generate migration CreatePosts title:string
      C. rails generate migration AddTitleToPosts title:string
      D. rails generate migration AddTitle posts string

      Solution

      1. Step 1: Identify the correct migration naming pattern

        Adding a column uses 'AddColumnNameToTableName' format, here 'AddTitleToPosts'.
      2. Step 2: Check the command syntax

        The correct syntax is 'rails generate migration AddTitleToPosts title:string'.
      3. Final Answer:

        rails generate migration AddTitleToPosts title:string -> Option C
      4. Quick Check:

        Correct migration command = rails generate migration AddTitleToPosts title:string [OK]
      Hint: Use 'AddColumnToTable' naming with column:type [OK]
      Common Mistakes:
      • Using 'CreatePosts' instead of 'AddTitleToPosts'
      • Wrong order or missing 'To' in migration name
      • Incorrect column type syntax
      3. Given this migration code:
      class AddAgeToUsers < ActiveRecord::Migration[7.0]
        def change
          add_column :users, :age, :integer
        end
      end

      What happens after running rails db:migrate?
      medium
      A. Raises a syntax error due to missing migration version
      B. Removes the 'age' column from the 'users' table
      C. Creates a new 'users' table with an 'age' column
      D. Adds an integer column named 'age' to the 'users' table

      Solution

      1. Step 1: Analyze the migration class

        The migration inherits from ActiveRecord::Migration[7.0] and defines a change method adding a column.
      2. Step 2: Understand the add_column method

        It adds an integer column 'age' to the existing 'users' table.
      3. Final Answer:

        Adds an integer column named 'age' to the 'users' table -> Option D
      4. Quick Check:

        add_column adds column = Adds an integer column named 'age' to the 'users' table [OK]
      Hint: add_column adds a new column to existing table [OK]
      Common Mistakes:
      • Confusing add_column with remove_column
      • Thinking it creates a new table
      • Missing migration version causes error (not here)
      4. You wrote this migration:
      class AddEmailToUsers < ActiveRecord::Migration[7.0]
        def change
          add_column :users, :email
        end
      end

      What is the problem when running rails db:migrate?
      medium
      A. Syntax error due to missing 'def up' method
      B. Missing column type for 'email' causes an error
      C. Migration runs successfully without issues
      D. Table 'users' does not exist error

      Solution

      1. Step 1: Check add_column method usage

        add_column requires three arguments: table name, column name, and column type.
      2. Step 2: Identify missing argument

        The migration misses the column type for 'email', causing an error.
      3. Final Answer:

        Missing column type for 'email' causes an error -> Option B
      4. Quick Check:

        add_column needs type argument [OK]
      Hint: Always specify column type with add_column [OK]
      Common Mistakes:
      • Omitting column type argument
      • Assuming migration runs without errors
      • Confusing change method with up/down methods
      5. You want to create a migration that renames the column username to login in the accounts table. Which migration code correctly does this?
      hard
      A. class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change rename_column :accounts, :username, :login end end
      B. class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change change_column :accounts, :username, :login end end
      C. class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change rename_table :username, :login end end
      D. class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change remove_column :accounts, :username add_column :accounts, :login, :string end end

      Solution

      1. Step 1: Identify the correct method to rename a column

        Rails provides rename_column to rename columns in a table.
      2. Step 2: Check each option's method

        class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change rename_column :accounts, :username, :login end end uses rename_column correctly; class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change change_column :accounts, :username, :login end end wrongly uses change_column; class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change rename_table :username, :login end end tries to rename tables; class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change remove_column :accounts, :username add_column :accounts, :login, :string end end removes and adds columns instead of renaming.
      3. Final Answer:

        Use rename_column :accounts, :username, :login in change method -> Option A
      4. Quick Check:

        rename_column renames columns = class RenameUsernameToLogin < ActiveRecord::Migration[7.0] def change rename_column :accounts, :username, :login end end [OK]
      Hint: Use rename_column to rename columns, not change_column [OK]
      Common Mistakes:
      • Using change_column instead of rename_column
      • Trying to rename tables instead of columns
      • Removing and adding columns instead of renaming
      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