class ActiveModelExtensions::Validations::CustomPresenceValidator
The string is a CSV of required field rules, where each field rule is:
- the name of a required field - OR a set of required field names spearated by 'or' (where only ONE is required)
Public Instance Methods
validate(record)
click to toggle source
# File lib/rails_core_extensions/active_model_extensions.rb, line 21 def validate(record) required_fields = Array.wrap(@options[:attributes]).first.call || [] return if required_fields.empty? required_fields.flatten.each do |required_field| if required_field.include? ' or ' fields = required_field.split(' or ') if fields.all? { |field| record.send(field).to_s.blank? } record.errors.add(:base, "One of %s is required" % fields.map(&:humanize).to_sentence) end else if record.send(required_field).to_s.blank? record.errors.add(required_field, "is required") end end end end