Bird
Raised Fist0
Ruby on Railsframework~20 mins

Model generation in Ruby on Rails - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Rails Model Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
📝 Syntax
intermediate
2:00remaining
Correct Rails model generation command
Which command correctly generates a Rails model named Article with a string attribute title and a text attribute content?
Arails generate model Article title:text content:string
Brails generate model Article title:string content:text
Crails generate scaffold Article title:string content:text
Drails generate model article title:string content:text
Attempts:
2 left
💡 Hint
Model names should be singular and capitalized. Attribute types must match the desired data type.
❓ component_behavior
intermediate
2:00remaining
Behavior of generated model with validations
Given a Rails model Product generated with name:string and a validation validates :name, presence: true, what happens when you try to save a Product without a name?
Ruby on Rails
class Product < ApplicationRecord
  validates :name, presence: true
end

p = Product.new
p.save
AThe save ignores validations and saves the product.
BThe save returns true and saves the product with a blank name.
CThe save raises a runtime error due to missing name.
DThe save returns false and the product is not saved to the database.
Attempts:
2 left
💡 Hint
Think about what validations do before saving a record.
🔧 Debug
advanced
2:00remaining
Fixing migration timestamp mismatch error
You generated a model with rails generate model User email:string but when running rails db:migrate, you get an error about a missing migration file. What is the most likely cause?
AThe migration file was deleted or renamed after generation, causing Rails to not find it.
BThe model file <code>user.rb</code> is missing in app/models.
CThe database.yml file is missing the development database configuration.
DThe schema.rb file is corrupted and needs to be deleted.
Attempts:
2 left
💡 Hint
Check the migration files folder for the generated migration.
❓ state_output
advanced
2:00remaining
Result of running a model generator with a reserved word attribute
What happens if you run rails generate model Post class:string and then try to migrate?
AMigration fails with a syntax error because 'class' is a reserved Ruby word.
BRails renames the 'class' attribute automatically to 'class_field'.
CMigration runs successfully and creates a posts table with a class column.
DMigration runs but the 'class' column is ignored.
Attempts:
2 left
💡 Hint
Consider Ruby reserved keywords and their use as column names.
🧠 Conceptual
expert
3:00remaining
Understanding Rails model generation with polymorphic associations
You want to generate a model Comment that belongs to a polymorphic association called commentable. Which command correctly generates the model with the necessary fields?
Arails generate model Comment body:text commentable:references{polymorphic}
Brails generate model Comment body:text commentable_id:integer commentable_type:string
Crails generate model Comment body:text commentable:belongs_to
Drails generate model Comment body:text commentable:polymorphic
Attempts:
2 left
💡 Hint
Rails has a special syntax for polymorphic references in generators.

Practice

(1/5)
1. What does the rails generate model command do in a Rails application?
easy
A. It creates a new model file and a migration file for the database.
B. It runs the database migration to update the schema.
C. It starts the Rails server to test the application.
D. It creates a new controller with views.

Solution

  1. Step 1: Understand the purpose of rails generate model

    This command creates a new model file that defines the data structure and a migration file to set up the database table.
  2. Step 2: Differentiate from other commands

    Running migrations is a separate step, and starting the server or creating controllers are different commands.
  3. Final Answer:

    It creates a new model file and a migration file for the database. -> Option A
  4. Quick Check:

    Model generation = creates model and migration files [OK]
Hint: Model generation creates files, migration applies changes [OK]
Common Mistakes:
  • Confusing model generation with running migrations
  • Thinking it starts the server
  • Mixing up model and controller generation
2. Which of the following is the correct syntax to generate a model named Article with a string field title and a text field content?
easy
A. rails generate model Article title:text content:string
B. rails generate model Article title:string content:text
C. rails generate controller Article title:string content:text
D. rails generate model article title:string content:text

Solution

  1. Step 1: Check the command structure

    The correct command uses 'rails generate model' followed by the model name with capitalized first letter and fields with their types.
  2. Step 2: Verify field types and names

    rails generate model Article title:string content:text correctly uses 'title:string' and 'content:text'. rails generate model Article title:text content:string swaps types incorrectly. rails generate controller Article title:string content:text uses 'controller' instead of 'model'. rails generate model article title:string content:text uses lowercase model name which is incorrect convention.
  3. Final Answer:

    rails generate model Article title:string content:text -> Option B
  4. Quick Check:

    Correct syntax = rails generate model Article title:string content:text [OK]
Hint: Model name capitalized, fields as name:type pairs [OK]
Common Mistakes:
  • Using 'controller' instead of 'model'
  • Swapping field types
  • Using lowercase model name
3. After running rails generate model Product name:string price:decimal and then rails db:migrate, what will be the result when you check the database schema?
medium
A. A products table with columns id, name (string), price (decimal), created_at, and updated_at.
B. A products table with columns id, name (decimal), price (string), created_at, and updated_at.
C. No table created until you manually create it in the database.
D. A products table with only id and timestamps columns.

Solution

  1. Step 1: Understand model generation and migration

    The generate command creates a migration file defining a products table with name as string and price as decimal. Running 'rails db:migrate' applies this to the database.
  2. Step 2: Check expected schema

    The table will have an id primary key, the specified columns with correct types, and timestamps (created_at, updated_at) added by default.
  3. Final Answer:

    A products table with columns id, name (string), price (decimal), created_at, and updated_at. -> Option A
  4. Quick Check:

    Migration creates table with correct columns and timestamps [OK]
Hint: Migration creates table with fields and timestamps [OK]
Common Mistakes:
  • Mixing up field types in the schema
  • Thinking migration doesn't create tables
  • Ignoring default timestamps columns
4. You ran rails generate model User email:string but forgot to run rails db:migrate. What problem will you face if you try to create a new User record?
medium
A. Rails will automatically run the migration for you.
B. The User record will save successfully without errors.
C. ActiveRecord::StatementInvalid error because the users table does not exist.
D. The model file will be missing, causing a LoadError.

Solution

  1. Step 1: Understand migration role

    Generating the model creates files but does not update the database schema until migrations are run.
  2. Step 2: Predict error when saving record

    Without migration, the users table does not exist, so trying to save a User record causes a database error.
  3. Final Answer:

    ActiveRecord::StatementInvalid error because the users table does not exist. -> Option C
  4. Quick Check:

    Missing migration run = database table missing error [OK]
Hint: Always run migrations after generating models [OK]
Common Mistakes:
  • Assuming migration runs automatically
  • Expecting record to save without table
  • Confusing missing model file with migration issue
5. You want to generate a model Order with a status field that can only be 'pending', 'paid', or 'shipped'. Which approach correctly sets this up in Rails?
hard
A. Generate model with status:enum field directly in the generate command.
B. Generate model with status:boolean field to represent the three states.
C. Generate model without status field and add it later manually in the database.
D. Generate model with status:string, then add an enum in the model file for the allowed values.

Solution

  1. Step 1: Understand Rails enum usage

    Rails does not support enum type in migrations directly. Instead, you create a string or integer field and define enum in the model file.
  2. Step 2: Choose correct field type and setup

    Using 'status:string' in the generate command and then adding enum in the model file for 'pending', 'paid', 'shipped' is the correct approach.
  3. Final Answer:

    Generate model with status:string, then add an enum in the model file for the allowed values. -> Option D
  4. Quick Check:

    Enum = string field + model enum definition [OK]
Hint: Use string field plus enum in model, not enum type in migration [OK]
Common Mistakes:
  • Trying to use enum type directly in migration
  • Using boolean for multiple states
  • Skipping field creation in generate command
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