Sha256: 2cc676b87570d27979e6103020746ae29904c0abb6686a6628b6acceae01d575

Contents?: true

Size: 1.13 KB

Versions: 6

Compression:

Stored size: 1.13 KB

Contents

# encoding: utf-8
module Mongoid
  module Validatable

    # Validates whether or not a field is unique against the documents in the
    # database.
    #
    # @example Define the uniqueness validator.
    #
    #   class Person
    #     include Mongoid::Document
    #     field :title
    #
    #     validates_uniqueness_of :title
    #   end
    class UniquenessValidator < ActiveModel::EachValidator

      # Scope the criteria to the scope options provided.
      #
      # @api private
      #
      # @example Scope the criteria.
      #   validator.scope(criteria, document)
      #
      # @param [ Criteria ] criteria The criteria to scope.
      # @param [ Document ] document The document being validated.
      #
      # @return [ Criteria ] The scoped criteria.
      #
      # @since 2.3.0
      def scope(criteria, document, attribute)
        Array.wrap(options[:scope]).each do |item|
          name = document.database_field_name(item)
          criteria = criteria.where(item => document.attributes[name])
        end
        criteria = criteria.where(deleted_at: nil) if document.paranoid?
        criteria
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mongoid-paranoia-1.3.0 lib/mongoid/core_ext/validatable/uniqueness.rb
mongoid-paranoia-1.2.0 lib/mongoid/core_ext/validatable/uniqueness.rb
mongoid-paranoia-1.1.0 lib/mongoid/core_ext/validatable/uniqueness.rb
mongoid-paranoia-1.0.1 lib/mongoid/core_ext/validatable/uniqueness.rb
mongoid-paranoia-1.0.0 lib/mongoid/core_ext/validatable/uniqueness.rb
mongoid-paranoia-1.0.0.beta2 lib/mongoid/core_ext/validatable/uniqueness.rb