Concept Flow - Where conditions
Start Query
Apply Where Condition
Build SQL WHERE Clause
Execute Query
Return Filtered Records
End
Rails builds a SQL query by applying where conditions, then executes it to return filtered records.
User.where(age: 30) User.where("name = ?", "Alice") User.where(age: 20..30)
| Step | Where Condition | SQL WHERE Clause | Action | Result |
|---|---|---|---|---|
| 1 | age: 30 | WHERE age = 30 | Build query with age filter | Query ready with age=30 filter |
| 2 | Execute query | WHERE age = 30 | Run SQL query | Returns users with age 30 |
| 3 | name = ? | WHERE name = 'Alice' | Build query with name filter | Query ready with name='Alice' filter |
| 4 | Execute query | WHERE name = 'Alice' | Run SQL query | Returns users named Alice |
| 5 | age: 20..30 | WHERE age BETWEEN 20 AND 30 | Build query with age range filter | Query ready with age between 20 and 30 |
| 6 | Execute query | WHERE age BETWEEN 20 AND 30 | Run SQL query | Returns users aged 20 to 30 |
| 7 | End | - | - | No more queries |
| Variable | Start | After 1 | After 3 | After 5 | Final |
|---|---|---|---|---|---|
| query | User.all | User.where(age: 30) | User.where("name = ?", "Alice") | User.where(age: 20..30) | Queries executed and results returned |
Rails 'where' filters records by building SQL WHERE clauses.
Use hash for simple equality: where(age: 30) -> WHERE age = 30.
Use placeholders for safety: where("name = ?", "Alice").
Use ranges for BETWEEN: where(age: 20..30).
Returns filtered ActiveRecord::Relation, query runs on execution.where method do in Rails ActiveRecord?wherewhere method is used to specify conditions to filter records in a database query.delete, migrations, or update_all.where?age: 30 is the standard way to filter by attribute value.User.where("name LIKE ?", "%John%")User.where(age > 25)
User.where("age > ?", 25) or User.where("age > 25").where conditions to find users who are active and older than 18?Pass the test and this pattern moves unknown