Class: ActiveModel::Validations::AssociationValidator

Inherits:
EachValidator
  • Object
show all
Defined in:
lib/active_model/validations/association.rb

Instance Method Summary collapse

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/active_model/validations/association.rb', line 5

def validate_each(record, attribute, value)
  association_name = options.fetch :association, "#{attribute}".gsub(/(\w+)_id/, '\1')
  association = record.send :"#{association_name}"

  unless record.respond_to? "#{association_name}".to_sym
    raise ArgumentError, "The #{association_name} association was not found!"
  end

  if value.blank?
    record_error(record, attribute, error_message(:blank), value)
  elsif association.nil?
    record_error(record, attribute, error_message(:invalid), value)
  end
end