Sha256: 0b028d46487024b351c0501e87b57cff2331c4443cd174aa1ff07d12c91b1874

Contents?: true

Size: 732 Bytes

Versions: 15

Compression:

Stored size: 732 Bytes

Contents

module Volt
  class UniqueValidator
    def self.validate(model, field_name, args)
      errors = {}

      if RUBY_PLATFORM != 'opal'
        if args
          value  = model.get(field_name)

          query = {}
          # Check to see if any other documents have this value.
          query[field_name.to_s] = value
          query['_id'] = { '$ne' => model._id }

          # Check if the value is taken
          # TODO: need a way to handle scope for unique
          if $page.store.send(:"_#{model.path[-2]}").find(query).size > 0
            message = (args.is_a?(Hash) && args[:message]) || 'is already taken'

            errors[field_name] = [message]
          end
        end
      end

      errors
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
volt-0.9.1.pre1 lib/volt/models/validators/unique_validator.rb
volt-0.9.0 lib/volt/models/validators/unique_validator.rb
volt-0.9.0.pre7 lib/volt/models/validators/unique_validator.rb
volt-0.9.0.pre6 lib/volt/models/validators/unique_validator.rb
volt-0.9.0.pre5 lib/volt/models/validators/unique_validator.rb
volt-0.9.0.pre4 lib/volt/models/validators/unique_validator.rb
volt-0.9.0.pre3 lib/volt/models/validators/unique_validator.rb
volt-0.9.0.pre2 lib/volt/models/validators/unique_validator.rb
volt-0.9.0.pre1 lib/volt/models/validators/unique_validator.rb
volt-0.8.27.beta9 lib/volt/models/validators/unique_validator.rb
volt-0.8.27.beta8 lib/volt/models/validators/unique_validator.rb
volt-0.8.27.beta7 lib/volt/models/validators/unique_validator.rb
volt-0.8.27.beta6 lib/volt/models/validators/unique_validator.rb
volt-0.8.27.beta5 lib/volt/models/validators/unique_validator.rb
volt-0.8.27.beta4 lib/volt/models/validators/unique_validator.rb