Module: Uniqueness::Model

Defined in:
lib/uniqueness/model.rb

Overview

:nodoc:

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



3
4
5
6
7
# File 'lib/uniqueness/model.rb', line 3

def self.included(base)
  base.extend ClassMethods
  # Track all uniqueness arguments
  base.class_attribute :uniqueness_options
end

Instance Method Details

#uniqueness_generateObject

Generates a new code based on given options



41
42
43
44
45
46
47
48
49
# File 'lib/uniqueness/model.rb', line 41

def uniqueness_generate
  self.uniqueness_options.each do |field, options|
    value = send(field)
    unless value.present?
      value = Uniqueness.generate(options)
      self.send("#{field}=", value)
    end
  end
end

#uniqueness_validationObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/uniqueness/model.rb', line 51

def uniqueness_validation
  self.class.uniqueness_options.each do |field, options|
    value = send(field)
    if value.nil?
      errors.add(field, 'should not be empty')
    else
      conditions = {}
      options[:scope].each do |s|
        conditions[s] = send(s)
      end
      conditions[field] = value
      query = self.class.where(conditions)
      errors.add(field, 'should be unique') if query.any?
    end
  end
end