18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/mongomodel/document/validations/uniqueness.rb', line 18
def validate_each(record, attribute, value)
finder_class = find_finder_class_for(record)
unique_scope = finder_class.scoped
if options[:case_sensitive] || !value.is_a?(String)
unique_scope = unique_scope.where(attribute => value)
else
unique_scope = unique_scope.where("_lowercase_#{attribute}" => value.downcase)
end
Array.wrap(options[:scope]).each do |scope|
unique_scope = unique_scope.where(scope => record.send(scope))
end
unique_scope = unique_scope.where(:id.ne => record.id) unless record.new_record?
if unique_scope.any?
record.errors.add(attribute, :taken, :message => options[:message], :value => value)
end
end
|