Class: NestedAttributesUniquenessValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
app/validators/nested_attributes_uniqueness_validator.rb

Overview

Instance Method Summary collapse

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



3
4
5
6
7
8
9
# File 'app/validators/nested_attributes_uniqueness_validator.rb', line 3

def validate_each(record, attribute, value)
  unless value.map(&options[:field]).uniq.size == value.size
    record.errors.add attribute, "must be unique"
    duplicates = value - Hash[value.map{|obj| [obj[options[:field]], obj]}].values
    duplicates.each { |obj| obj.errors.add options[:field], "has already been taken" }
  end
end