Skip to main content

multi_attribute_validation

🔗 Multi-Attribute Validation with validate​

When validation logic spans multiple attributes, use a custom validate method. You can inspect or compare fields and add errors to specific attributes or :base for global errors.

class Subscription < ApplicationRecord
validate :end_date_after_start_date

def end_date_after_start_date
return if end_date.blank? || start_date.blank?

if end_date <= start_date
errors.add(:end_date, "must be after start date")
errors.add(:base, "Subscription period is invalid")
end
end
end