class Soulless::Validations::UniquenessValidator

Public Class Methods

new(options) click to toggle source
Calls superclass method
# 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

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# 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