Class: Soulless::Validations::UniquenessValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/soulless/validations/uniqueness_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ UniquenessValidator

Returns a new instance of UniquenessValidator.



4
5
6
7
8
9
10
11
# File 'lib/soulless/validations/uniqueness_validator.rb', line 4

def initialize(options)
  raise 'ActiveRecord is not defined. The Soulless uniqueness validator cannot be used when ActiveRecord is not present.' unless Object.const_defined?('ActiveRecord')
  @model = options[:model]
  @attribute = options[:attribute]
  options.merge!(class: @model)
  @validator = ActiveRecord::Validations::UniquenessValidator.new(options)
  super(options)
end

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/soulless/validations/uniqueness_validator.rb', line 13

def validate_each(record, attribute, value)
  if !@model
    raise ArgumentError, 'Missing required argument "model"'
  else
    record_orig, attribute_orig = record, attribute

    attribute = @attribute if @attribute
    record = @model.new(attribute => value)

    @validator.validate_each(record, attribute, value)

    if record.errors.any?
      record_orig.errors.add(attribute, :taken, options.except(:case_sensitive, :scope).merge(value: value))
    end
  end
end