Bird
Raised Fist0
Ruby on Railsframework~20 mins

Where conditions in Ruby on Rails - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Where Conditions Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this ActiveRecord query?
Given a Rails model User with attributes age and active, what records does this query return?

User.where(age: 30).where(active: true)
AAll users who are 30 years old regardless of active status.
BAll users who are either 30 years old or active (active = true).
CAll users who are exactly 30 years old and active (active = true).
DAll users who are active regardless of age.
Attempts:
2 left
💡 Hint
Remember that chaining where clauses in Rails combines conditions with AND logic.
📝 Syntax
intermediate
2:00remaining
Which option correctly uses a hash condition with where?
Select the correct syntax to find all Product records with category equal to 'books' and in_stock equal to true.
AProduct.where(category: 'books', in_stock: true)
BProduct.where('category = books AND in_stock = true')
CProduct.where(category == 'books' && in_stock == true)
DProduct.where(category = 'books', in_stock = true)
Attempts:
2 left
💡 Hint
Use a Ruby hash with symbols for keys inside where.
🔧 Debug
advanced
2:00remaining
Why does this where query raise an error?
Consider this code:

User.where('age > ?', 'twenty')

Why does it raise an error?
ABecause 'twenty' is a string and cannot be compared to an integer age.
BBecause <code>where</code> does not accept parameterized queries.
CBecause the placeholder '?' is missing in the query string.
DBecause the column name 'age' is misspelled.
Attempts:
2 left
💡 Hint
Check the data type expected for the age column.
🧠 Conceptual
advanced
2:00remaining
What does this where clause do?
What is the effect of this query?

Order.where('created_at >= ?', 1.week.ago).where(status: ['shipped', 'delivered'])
AReturns orders created before one week ago with status 'shipped' or 'delivered'.
BReturns orders created within the last week with status either 'shipped' or 'delivered'.
CReturns orders with status 'shipped' or 'delivered' regardless of creation date.
DReturns orders created within the last week with any status.
Attempts:
2 left
💡 Hint
The first where filters by date, the second by status values.
❓ state_output
expert
2:00remaining
What is the count of records returned by this query?
Given the following data in Product table:
- 3 products with price 100
- 2 products with price 200
- 1 product with price 300

What is the result of:

Product.where('price >= ?', 150).where.not(price: 300).count
A3
B1
C6
D2
Attempts:
2 left
💡 Hint
Filter products with price >= 150, then exclude those with price 300.

Practice

(1/5)
1. What does the where method do in Rails ActiveRecord?
easy
A. Creates a new database table
B. Deletes records from the database
C. Updates all records without conditions
D. Filters records based on given conditions

Solution

  1. Step 1: Understand the purpose of where

    The where method is used to specify conditions to filter records in a database query.
  2. Step 2: Compare with other database actions

    Deleting, creating tables, or updating all records are different methods like delete, migrations, or update_all.
  3. Final Answer:

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

    where filters records = C [OK]
Hint: Remember: where narrows down records by conditions [OK]
Common Mistakes:
  • Confusing where with delete or update methods
  • Thinking where creates or deletes tables
  • Assuming where modifies all records without conditions
2. Which of the following is the correct syntax to find users with age 30 using where?
easy
A. User.where('age == ?', 30)
B. User.where(age: 30)
C. User.where(age == 30)
D. User.where(age = 30)

Solution

  1. Step 1: Identify correct hash syntax for where

    Using a hash like age: 30 is the standard way to filter by attribute value.
  2. Step 2: Check other options for syntax errors

    User.where('age == ?', 30) uses invalid SQL operator ==; User.where(age == 30) uses invalid Ruby comparison inside where; User.where(age = 30) uses assignment instead of comparison.
  3. Final Answer:

    User.where(age: 30) -> Option B
  4. Quick Check:

    Hash syntax for where = A [OK]
Hint: Use hash syntax for simple where conditions [OK]
Common Mistakes:
  • Using == inside where instead of hash or string
  • Using = instead of : or ? for conditions
  • Confusing string and hash syntax
3. What will this code return?
User.where("name LIKE ?", "%John%")
medium
A. All users with name containing 'John'
B. All users with name exactly 'John'
C. Syntax error due to quotes
D. No users because LIKE is invalid

Solution

  1. Step 1: Understand the SQL LIKE operator

    LIKE with % means match any characters before or after 'John', so it finds names containing 'John'.
  2. Step 2: Check the where syntax

    The string with placeholder and argument is correct syntax for complex conditions.
  3. Final Answer:

    All users with name containing 'John' -> Option A
  4. Quick Check:

    LIKE with % means contains = A [OK]
Hint: LIKE with % means contains substring [OK]
Common Mistakes:
  • Thinking LIKE matches exact string only
  • Confusing syntax with invalid quotes
  • Assuming LIKE is not supported in where
4. Identify the error in this code:
User.where(age > 25)
medium
A. Incorrect use of > inside where without string
B. Should use User.find instead of where
C. No error, code works fine
D. Missing quotes around condition string

Solution

  1. Step 1: Check syntax of where conditions

    Conditions with operators like > must be inside a string or hash syntax; direct Ruby expressions are invalid.
  2. Step 2: Identify correct usage

    Correct usage is User.where("age > ?", 25) or User.where("age > 25").
  3. Final Answer:

    Incorrect use of > inside where without string -> Option A
  4. Quick Check:

    Operators need string syntax in where = D [OK]
Hint: Use strings for operators like > in where [OK]
Common Mistakes:
  • Writing Ruby expressions directly inside where
  • Forgetting to quote conditions with operators
  • Using find instead of where for filtering
5. How can you chain multiple where conditions to find users who are active and older than 18?
hard
A. User.where(active: true, age > ?, 18)
B. User.where('active = true AND age > ?')
C. User.where(active: true).where('age > ?', 18)
D. User.where(active == true).where(age > 18)

Solution

  1. Step 1: Understand chaining of where

    Multiple where calls can be chained to combine conditions, each filtering further.
  2. Step 2: Check syntax of each where call

    First where uses hash for simple boolean, second uses string with placeholder for age condition.
  3. Step 3: Evaluate other options

    User.where(active: true, age > ?, 18) uses invalid Ruby expression without quotes; User.where('active = true AND age > ?') uses placeholder without bind argument; User.where(active == true).where(age > 18) uses invalid Ruby expressions.
  4. Final Answer:

    User.where(active: true).where('age > ?', 18) -> Option C
  5. Quick Check:

    Chain where with hash and string = B [OK]
Hint: Chain where calls for multiple conditions [OK]
Common Mistakes:
  • Mixing hash and string in one where call incorrectly
  • Using == inside where instead of : or placeholders
  • Not chaining where calls properly
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