Bird
Raised Fist0
Ruby on Railsframework~10 mins

Query interface basics in Ruby on Rails - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to fetch all users from the database.

Ruby on Rails
users = User.[1]
Drag options to blanks, or click blank then click option'
Aselect
Bfind
Cwhere
Dall
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'find' without an ID causes an error.
Using 'where' requires conditions.
Using 'select' is for choosing columns, not records.
2fill in blank
medium

Complete the code to find users with the name 'Alice'.

Ruby on Rails
users = User.where(name: [1])
Drag options to blanks, or click blank then click option'
A'Alice'
B:Alice
CAlice
D"Alice"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a symbol (:Alice) instead of a string.
Not quoting the string at all.
Using bare words without quotes.
3fill in blank
hard

Fix the error in the code to get the first user ordered by created_at.

Ruby on Rails
user = User.order(:created_at).[1]
Drag options to blanks, or click blank then click option'
Alast
Bfirst
Ctake
Dfind
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'last' returns the newest record, not the first.
Using 'find' requires an ID argument.
Using 'take' returns an array, while 'first' returns a single record.
4fill in blank
hard

Fill both blanks to get users created after 2023-01-01 and order by name.

Ruby on Rails
users = User.where("created_at > [1]").[2](:name)
Drag options to blanks, or click blank then click option'
A'2023-01-01'
Border
Csort
Dwhere
Attempts:
3 left
💡 Hint
Common Mistakes
Using sort instead of order.
Not quoting the date string.
Using where again instead of order.
5fill in blank
hard

Fill all three blanks to select users with age over 30, order by age descending, and limit to 5 results.

Ruby on Rails
users = User.where('age [1] [2]').order(age: [3]).limit(5)
Drag options to blanks, or click blank then click option'
A>
B30
C:desc
D:asc
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' for age.
Ordering ascending instead of descending.
Quoting the number 30 in the where clause.

Practice

(1/5)
1. What does the where method do in Rails' query interface?
easy
A. Filters records based on given conditions
B. Deletes records from the database
C. Updates records with new values
D. Creates new records in the database

Solution

  1. Step 1: Understand the purpose of where

    The where method is used to filter records by specifying conditions, like filtering users by age.
  2. Step 2: Compare with other methods

    Methods like delete, update, and create perform different actions, not filtering.
  3. Final Answer:

    Filters records based on given conditions -> Option A
  4. Quick Check:

    where filters records [OK]
Hint: Remember: where = filter records by condition [OK]
Common Mistakes:
  • Confusing where with update or delete
  • Thinking where creates or deletes records
  • Assuming where changes data instead of filtering
2. Which of the following is the correct syntax to get all users ordered by their created_at date in descending order?
easy
A. User.order(:created_at, :desc)
B. User.order('created_at ASC')
C. User.order(created_at: :desc)
D. User.order(created_at => 'desc')

Solution

  1. Step 1: Identify correct hash syntax for order

    Rails expects a hash with column name as key and direction as symbol, like created_at: :desc.
  2. Step 2: Check other options for syntax errors

    User.order(:created_at, :desc) uses wrong argument format treating :desc as column name, User.order('created_at ASC') uses string with wrong direction, User.order(created_at => 'desc') uses wrong hash rocket syntax.
  3. Final Answer:

    User.order(created_at: :desc) -> Option C
  4. Quick Check:

    Correct hash syntax for order = User.order(created_at: :desc) [OK]
Hint: Use symbol keys and symbols for direction in order [OK]
Common Mistakes:
  • Passing multiple arguments instead of a hash
  • Using wrong direction like ASC in order string
  • Wrong hash syntax with => and string
3. Given the code Product.where(price: 100).limit(3).pluck(:name), what will be the output?
medium
A. An array of up to 3 product names with price 100
B. An array of all product names regardless of price
C. A single product name with price 100
D. An error because limit cannot be chained after where

Solution

  1. Step 1: Understand chaining of query methods

    where(price: 100) filters products with price 100, limit(3) restricts to 3 records, pluck(:name) extracts names into an array.
  2. Step 2: Analyze output type

    The result is an array of names, up to 3, matching the price condition.
  3. Final Answer:

    An array of up to 3 product names with price 100 -> Option A
  4. Quick Check:

    where + limit + pluck = filtered limited array [OK]
Hint: Chain filters, limits, then pluck for array output [OK]
Common Mistakes:
  • Thinking pluck returns a single value
  • Assuming limit cannot be chained after where
  • Ignoring the filter condition in output
4. What is wrong with this query? User.where('age > ?', 18).order('name ASC').limit('five')
medium
A. The where clause syntax is incorrect
B. The limit argument should be an integer, not a string
C. The order method cannot use strings
D. The query is correct and will run without errors

Solution

  1. Step 1: Check each method argument type

    where('age > ?', 18) is correct, order('name ASC') accepts string, but limit('five') expects an integer, not a string.
  2. Step 2: Identify the error source

    Passing 'five' as a string sets limit to 0 because 'five'.to_i == 0, not the intended value.
  3. Final Answer:

    The limit argument should be an integer, not a string -> Option B
  4. Quick Check:

    limit needs integer, not string [OK]
Hint: limit must be a number, not a word string [OK]
Common Mistakes:
  • Passing string instead of integer to limit
  • Thinking order cannot take strings
  • Misreading where clause syntax
5. You want to find all Article records published after 2020, sorted by title ascending, but only show the first 5 titles. Which query is correct?
hard
A. Article.where(published_at: > Date.new(2020,1,1)).order(:title).limit(5).pluck(:title)
B. Article.limit(5).order(title: :asc).where('published_at > 2020-01-01').pluck(:title)
C. Article.where('published_at > 2020-01-01').order('title DESC').limit(5).pluck(:title)
D. Article.where('published_at > ?', Date.new(2020,1,1)).order(title: :asc).limit(5).pluck(:title)

Solution

  1. Step 1: Check filtering condition syntax

    Article.where('published_at > ?', Date.new(2020,1,1)).order(title: :asc).limit(5).pluck(:title) uses correct SQL placeholder with where('published_at > ?', Date.new(2020,1,1)). Article.where(published_at: > Date.new(2020,1,1)).order(:title).limit(5).pluck(:title) has invalid Ruby syntax. Article.where('published_at > 2020-01-01').order('title DESC').limit(5).pluck(:title) uses string date without quotes and wrong order direction.
  2. Step 2: Verify order and limit usage

    Article.where('published_at > ?', Date.new(2020,1,1)).order(title: :asc).limit(5).pluck(:title) orders by title ascending with symbol and limits to 5 records before pluck. Article.limit(5).order(title: :asc).where('published_at > ?', '2020-01-01').pluck(:title) applies limit before where, which is less efficient and may give wrong results.
  3. Final Answer:

    Article.where('published_at > ?', Date.new(2020,1,1)).order(title: :asc).limit(5).pluck(:title) -> Option D
  4. Quick Check:

    Correct where, order ascending, limit 5, pluck titles [OK]
Hint: Filter first, then order, limit, and pluck [OK]
Common Mistakes:
  • Wrong where syntax with > operator
  • Ordering descending instead of ascending
  • Limiting before filtering causing wrong results
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