Bird
Raised Fist0
Ruby on Railsframework~20 mins

Schema.rb understanding in Ruby on Rails - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Schema Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What does schema.rb represent in a Rails project?
In a Rails application, what is the primary purpose of the schema.rb file?
AIt contains raw SQL commands to create and modify database tables.
BIt stores the current state of the database schema as Ruby code, reflecting all migrations applied.
CIt is a configuration file for database connection settings.
DIt holds the seed data used to populate the database with initial records.
Attempts:
2 left
💡 Hint
Think about what Rails uses to recreate the database structure without running all migrations.
❓ component_behavior
intermediate
2:00remaining
What happens when you run rails db:schema:load?
When you execute rails db:schema:load, what is the expected behavior in your Rails application?
AIt resets the database and runs the seed file to populate data.
BIt runs all pending migrations to update the database schema.
CIt loads the database schema from <code>schema.rb</code> and creates tables accordingly, skipping migrations.
DIt drops the database without recreating any tables.
Attempts:
2 left
💡 Hint
Consider how Rails can set up the database structure without running migrations one by one.
🔧 Debug
advanced
2:00remaining
Why does schema.rb not update after a migration?
You ran a migration to add a new column, but schema.rb did not change. Which of the following is the most likely cause?
AThe migration was run in a different environment than the one generating schema.rb.
BThe migration file has a syntax error preventing it from running.
CThe database adapter does not support schema.rb generation.
DThe <code>schema.rb</code> file is manually locked and cannot be updated.
Attempts:
2 left
💡 Hint
Think about how Rails decides when to update schema.rb after migrations.
❓ state_output
advanced
2:00remaining
What is the effect of changing config.active_record.schema_format to :sql?
If you set config.active_record.schema_format = :sql in your Rails configuration, what will be the effect on schema files?
ARails will stop generating any schema file automatically.
BRails will generate both <code>schema.rb</code> and <code>structure.sql</code> files.
CRails will generate a JSON schema file describing the database.
DRails will generate <code>structure.sql</code> with raw SQL instead of <code>schema.rb</code>.
Attempts:
2 left
💡 Hint
Consider how Rails handles complex database features not supported by Ruby schema.rb.
📝 Syntax
expert
3:00remaining
Identify the error in this schema.rb snippet
Given this snippet from a schema.rb file, what error will Rails raise when loading it?
create_table "users", force: :cascade do |t|
  t.string "name"
  t.integer "age"
  t.timestamps
end

create_table "posts", force: :cascade do |t|
  t.string "title"
  t.text "content"
  t.references :user, foreign_key: true
end
Ruby on Rails
create_table "users", force: :cascade do |t|
  t.string "name"
  t.integer "age"
  t.timestamps
end

create_table "posts", force: :cascade do |t|
  t.string "title"
  t.text "content"
  t.references :user, foreign_key: true
end
ANo error; schema.rb loads successfully.
BActiveRecord::StatementInvalid due to missing users table before posts creation.
CSyntaxError because of missing block end.
DArgumentError because foreign_key option is invalid in schema.rb.
Attempts:
2 left
💡 Hint
Check if the schema.rb code follows Rails conventions and syntax.

Practice

(1/5)
1. What is the main purpose of the schema.rb file in a Rails project?
easy
A. To show the current database tables and columns in Ruby code
B. To store user data permanently
C. To write application business logic
D. To manage user sessions

Solution

  1. Step 1: Understand the role of schema.rb

    The schema.rb file represents the database structure in Ruby code format.
  2. Step 2: Differentiate from other files

    It does not store data or application logic but shows tables and columns for easy sharing and recreation.
  3. Final Answer:

    To show the current database tables and columns in Ruby code -> Option A
  4. Quick Check:

    schema.rb = database structure [OK]
Hint: Remember: schema.rb maps database structure only [OK]
Common Mistakes:
  • Thinking schema.rb stores actual data
  • Confusing it with migration files
  • Assuming it contains app logic
2. Which of the following is the correct syntax to define a string column named title in schema.rb?
easy
A. t.string :title
B. t.column :title, :integer
C. t.text 'title'
D. t.integer :title

Solution

  1. Step 1: Identify correct column type syntax

    In schema.rb, string columns use t.string :column_name syntax.
  2. Step 2: Check options

    t.string :title uses t.string :title, which is correct for a string column named title.
  3. Final Answer:

    t.string :title -> Option A
  4. Quick Check:

    String column syntax = t.string :title [OK]
Hint: Use t.string :name for string columns [OK]
Common Mistakes:
  • Using t.integer for string columns
  • Using quotes instead of symbols
  • Confusing t.text with t.string
3. Given this snippet from schema.rb:
create_table "books", force: :cascade do |t|
  t.string "name"
  t.integer "pages"
  t.timestamps
end
What columns will the books table have?
medium
A. name (string), pages (string), timestamps (string)
B. name (string), pages (integer) only
C. name (string), pages (integer), created_at (datetime), updated_at (datetime)
D. name (text), pages (integer), timestamps (boolean)

Solution

  1. Step 1: Read column definitions

    The table has name as string, pages as integer, and t.timestamps adds created_at and updated_at datetime columns.
  2. Step 2: Confirm column types

    So columns are: name (string), pages (integer), created_at (datetime), updated_at (datetime).
  3. Final Answer:

    name (string), pages (integer), created_at (datetime), updated_at (datetime) -> Option C
  4. Quick Check:

    t.timestamps adds created_at and updated_at [OK]
Hint: Remember t.timestamps adds two datetime columns [OK]
Common Mistakes:
  • Ignoring t.timestamps columns
  • Assuming pages is string
  • Confusing column types
4. You see this line in schema.rb but your migration added a price column as decimal:
t.integer :price
What is the likely problem?
medium
A. The price column is missing from the database
B. The migration syntax is wrong and created an integer column
C. Rails does not support decimal columns
D. The migration used decimal but schema.rb shows integer, so schema.rb is outdated

Solution

  1. Step 1: Compare migration and schema types

    The migration added price as decimal, but schema.rb shows integer, indicating it was not updated.
  2. Step 2: Understand schema.rb update process

    schema.rb updates only after running migrations successfully; if not updated, it shows old info.
  3. Final Answer:

    schema.rb is outdated and shows integer instead of decimal -> Option D
  4. Quick Check:

    Run migrations to update schema.rb [OK]
Hint: If types differ, check if migrations were run properly [OK]
Common Mistakes:
  • Assuming Rails lacks decimal support
  • Thinking migration syntax is always wrong
  • Ignoring need to run migrations
5. You want to add a new published boolean column with default false to your articles table. After creating and running the migration, what will schema.rb show for this column?
hard
A. t.boolean :published
B. t.boolean :published, default: false
C. t.integer :published, default: 0
D. t.string :published, default: 'false'

Solution

  1. Step 1: Understand migration effect on schema.rb

    Adding a boolean with default false will be reflected as t.boolean :published, default: false in schema.rb.
  2. Step 2: Eliminate incorrect options

    t.boolean :published misses default, C uses wrong type integer, D uses string type incorrectly.
  3. Final Answer:

    t.boolean :published, default: false -> Option B
  4. Quick Check:

    Boolean with default shows type and default in schema.rb [OK]
Hint: Boolean defaults appear explicitly in schema.rb [OK]
Common Mistakes:
  • Omitting default value in schema.rb
  • Using wrong data type for boolean
  • Confusing string and boolean types
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