Performance: Presence validation
Presence validation affects server-side response time and user experience by preventing unnecessary database writes and reducing error handling on the client.
class User < ApplicationRecord validates :name, presence: true end # In controller user = User.new(params[:user]) if user.save # success else # handle validation errors end
class User < ApplicationRecord # No presence validation end # In controller user = User.new(params[:user]) user.save # saves even if fields are empty
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| No presence validation | N/A (server-side) | N/A | N/A | [X] Bad |
| With presence validation | N/A (server-side) | N/A | N/A | [OK] Good |
validates :name, presence: true do in a Rails model?name fieldvalidates :name, presence: true means the name must have a value.name field is not empty before saving. -> Option Aemail attribute in a Rails model?validates :attribute, presence: true for presence validation.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.validates :field, presence: true [OK]validates :field, presence: true for presence [OK]validate instead of validatesrequired instead of presenceclass User < ApplicationRecord validates :username, presence: true end
User.new(username: '')?username: ''class Product < ApplicationRecord validates :title, presence end
presence: true, not just presence.true: true after presence, causing syntax error.true after presence. -> Option Dpresence: true [OK]presence: true for presence validation [OK]: true after presencevalidate instead of validatesPost model's title and content are present, but content can be blank if title is 'Draft'. Which validation setup achieves this?contentpresence: true with unless condition to skip validation if title is 'Draft'.unless: -> { title == 'Draft' } to skip content presence validation when title is 'Draft'. Others misuse if or set presence false incorrectly.unless to skip presence validation conditionally [OK]unless to skip presence validation conditionally [OK]if instead of unless for skipping validationpresence: false which disables validationPass the test and this pattern moves unknown