0
0
Ruby on Railsframework~10 mins

Presence validation in Ruby on Rails - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Presence validation
Start: Create model instance
Assign attribute values
Run validation
Check if attribute is present?
NoAdd error message
Yes
Validation passes
Save or reject model
This flow shows how Rails checks if a required attribute is present before saving a model.
Execution Sample
Ruby on Rails
class User < ApplicationRecord
  validates :name, presence: true
end

user = User.new(name: "")
user.valid?
This code creates a User model that requires a name to be present and checks if an empty name is valid.
Execution Table
StepAttribute 'name' ValueValidation CheckResultError Messages
1""Is 'name' present?No["Name can't be blank"]
2"Alice"Is 'name' present?Yes[]
3nilIs 'name' present?No["Name can't be blank"]
4"Bob"Is 'name' present?Yes[]
5Validation stopsAll attributes checkedValidation passes only if all presentErrors prevent save
💡 Validation stops after checking presence; if any required attribute is missing, errors block saving.
Variable Tracker
VariableStartAfter 1After 2After 3After 4Final
user.namenil"""Alice"nil"Bob""Bob"
user.errors[:name][]["Name can't be blank"][]["Name can't be blank"][][]
user.valid?falsefalsetruefalsetruetrue
Key Moments - 3 Insights
Why does an empty string fail presence validation?
Presence validation treats empty strings as missing values, so it adds an error as shown in step 1 of the execution_table.
What happens if the attribute is nil?
If the attribute is nil, presence validation fails and adds an error, as shown in step 3 of the execution_table.
Does presence validation allow saving if the attribute is present?
Yes, if the attribute is present and not empty, validation passes and the model can be saved, as shown in steps 2 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the validation result when user.name is an empty string?
AValidation is skipped
BValidation passes with no errors
CValidation fails with error message
DValidation passes but with warnings
💡 Hint
Check step 1 in the execution_table where user.name is ""
At which step does the validation pass because the name is present?
AStep 2
BStep 1
CStep 3
DStep 5
💡 Hint
Look for steps where validation result is 'Yes' and errors are empty
If user.name is nil, what error message appears according to the execution_table?
A"Name is invalid"
B"Name can't be blank"
CNo error message
D"Name must be unique"
💡 Hint
See step 3 in the execution_table for user.name = nil
Concept Snapshot
Presence validation in Rails ensures a model attribute is not empty or nil.
Use validates :attribute, presence: true in the model.
If the attribute is missing or empty string, validation fails.
Errors are added to the model preventing save.
This helps keep required data present before saving.
Full Transcript
Presence validation in Rails checks if a model attribute has a value before saving. When you add validates :name, presence: true, Rails ensures the name is not nil or an empty string. If the attribute is missing, Rails adds an error message like "Name can't be blank" and the model is invalid. This prevents saving incomplete data. The execution table shows different values for the name attribute and whether validation passes or fails. Empty strings and nil values fail validation, while non-empty strings pass. This simple check helps keep your data complete and reliable.