Presence validation ensures that a specific attribute is not empty or nil before saving a record in the database.
Click to reveal answer
beginner
How do you add presence validation to a model attribute in Rails?
Use validates :attribute_name, presence: true inside the model class.
Click to reveal answer
beginner
What happens if a presence validation fails when saving a record?
The record is not saved, and error messages are added to the model's errors collection.
Click to reveal answer
intermediate
Can presence validation check multiple attributes at once?
Yes, you can validate multiple attributes by listing them: validates :name, :email, presence: true.
Click to reveal answer
beginner
Why is presence validation important in web applications?
It prevents saving incomplete or invalid data, ensuring the app works correctly and data stays reliable.
Click to reveal answer
Which Rails method is used to enforce presence validation on a model attribute?
Avalidates :attribute, presence: true
Bvalidate_presence_of :attribute
Ccheck_presence :attribute
Drequire :attribute
✗ Incorrect
The correct syntax is validates :attribute, presence: true to enforce presence validation.
What will happen if a model fails presence validation when calling save?
AThe record will save anyway
BThe attribute will be auto-filled
CThe app will crash
DThe record will not save and errors will be added
✗ Incorrect
If presence validation fails, the record is not saved and error messages are added to the model.
Can you validate presence for multiple attributes in one line?
AYes, but only for string attributes
BNo, you must validate each attribute separately
CYes, by listing attributes like <code>validates :name, :email, presence: true</code>
DNo, Rails does not support multiple attributes in presence validation
✗ Incorrect
Rails allows validating presence for multiple attributes by listing them in one validates call.
Which of these values will fail presence validation?
A"Hello"
B" " (a space)
Cnil
D0
✗ Incorrect
Presence validation fails if the attribute is nil or blank (including whitespace-only strings like " "). "Hello" and 0 are present.
Where do you place presence validation code in a Rails app?
AIn the model
BIn the database schema
CIn the view
DIn the controller
✗ Incorrect
Presence validation is declared inside the model class to check data before saving.
Explain how to add presence validation to a Rails model and what it does.
Think about where validations go and what presence means.
You got /3 concepts.
Why is presence validation useful in a web application? Give an example.
Consider what happens if important info is missing.
You got /3 concepts.
Practice
(1/5)
1. What does validates :name, presence: true do in a Rails model?
easy
A. It ensures the name field is not empty before saving.
B. It automatically fills the name field with a default value.
C. It deletes the record if name is empty.
D. It allows name to be empty without errors.
Solution
Step 1: Understand presence validation purpose
Presence validation checks that a field is not blank before saving a record.
Step 2: Apply to name field
Using validates :name, presence: true means the name must have a value.
Final Answer:
It ensures the name field is not empty before saving. -> Option A
Quick Check:
Presence validation = field not empty [OK]
Hint: Presence validation means field cannot be blank [OK]
Common Mistakes:
Thinking it fills default values automatically
Confusing presence with uniqueness validation
Assuming it deletes records if empty
2. Which of the following is the correct syntax to add presence validation for the email attribute in a Rails model?
easy
A. validates_presence_of email
B. validates :email, presence: true
C. validate :email, presence: true
D. validates :email, required: true
Solution
Step 1: Recall modern Rails validation syntax
Rails uses validates :attribute, presence: true for presence validation.
Step 2: Check each option
validates_presence_of email is invalid syntax (missing symbol ":email"); validates :email, presence: true is the correct modern syntax; validate :email, presence: true is incorrect method name; validates :email, required: true uses wrong option key.
Final Answer:
validates :email, presence: true -> Option B
Quick Check:
Use validates :field, presence: true [OK]
Hint: Use validates :field, presence: true for presence [OK]
Common Mistakes:
Using validate instead of validates
Using required instead of presence
Confusing old and new syntax
3. Given this model code:
class User < ApplicationRecord
validates :username, presence: true
end
What happens if you try to save User.new(username: '')?
medium
A. The save fails because username is blank.
B. The user is saved with an empty username.
C. An error is raised due to syntax error.
D. The username is automatically set to 'default'.
Solution
Step 1: Understand presence validation effect on blank string
Presence validation treats empty strings as invalid, so saving fails.
Step 2: Apply to username: ''
Since username is empty string, validation fails and save returns false.
Final Answer:
The save fails because username is blank. -> Option A
Quick Check:
Empty string fails presence validation [OK]
Hint: Empty string fails presence validation, save returns false [OK]
Common Mistakes:
Thinking empty string passes presence validation
Expecting automatic default value assignment
Confusing validation failure with exceptions
4. Identify the error in this model validation code:
class Product < ApplicationRecord
validates :title, presence
end
medium
A. No error, code is correct.
B. Should use validate instead of validates.
C. The attribute title must be a string.
D. Missing true after presence.
Solution
Step 1: Check presence validation syntax
Presence validation requires presence: true, not just presence.
Step 2: Identify missing true
The code misses : true after presence, causing syntax error.
Final Answer:
Missing true after presence. -> Option D
Quick Check:
Presence validation needs presence: true [OK]
Hint: Always write presence: true for presence validation [OK]
Common Mistakes:
Omitting : true after presence
Using validate instead of validates
Assuming attribute type affects validation syntax
5. You want to ensure a Post model's title and content are present, but content can be blank if title is 'Draft'. Which validation setup achieves this?
hard
A. validates :title, presence: true
validates :content, presence: false, unless: -> { title == 'Draft' }
B. validates :title, presence: true
validates :content, presence: true, if: -> { title == 'Draft' }
C. validates :title, presence: true
validates :content, presence: true, unless: -> { title == 'Draft' }
D. validates :title, presence: true
validates :content, presence: false, if: -> { title == 'Draft' }
Solution
Step 1: Understand requirement for content
Content must be present except when title is 'Draft'.
Step 2: Use conditional presence validation
Use presence: true with unless condition to skip validation if title is 'Draft'.
Step 3: Check options
validates :title, presence: true
validates :content, presence: true, unless: -> { title == 'Draft' } correctly uses unless: -> { title == 'Draft' } to skip content presence validation when title is 'Draft'. Others misuse if or set presence false incorrectly.
Final Answer:
validates :title, presence: true
validates :content, presence: true, unless: -> { title == 'Draft' } -> Option C
Quick Check:
Use unless to skip presence validation conditionally [OK]
Hint: Use unless to skip presence validation conditionally [OK]
Common Mistakes:
Using if instead of unless for skipping validation
Setting presence: false which disables validation
Not combining validations properly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.