Uploaded image for project: 'Mongoid'
  1. Mongoid
  2. MONGOID-353

validates_uniquness_of :case_sensitive => false does not work

    • Type: Icon: Task Task
    • Resolution: Done
    • 12_01_17
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None

      class User
      include Mongoid::Document
      validates_uniqueness_of :email , :case_sensitive => false
      end

      User.create!(:email => 'test@test.com')
      User.create!(:email => 'TEST@TEST.COM')

      Both users are saved. This should not be the case. If we change line 29 of uniquness.rb to be

      criteria = @klass.where(attribute => (options[:case_sensistive] ? value : Regexp.new(value, Regexp::IGNORECASE)))

      and change line 27 to be

      criteria = criteria.where(attribute =>( options[:case_sensistive] ? value : Regexp.new(value, Regexp::IGNORECASE)), :_id =>

      {'$ne' => document._id})

      That should do the trick.

      It could also be done with:

      criteria = @klass.where(attribute => Regexp.new(value, !options[:case_sensistive]) )

      and
      criteria = criteria.where(attribute => Regexp.new(value, !options[:case_sensistive]), :_id => {'$ne' => document._id}

      )

            Assignee:
            Unassigned Unassigned
            Reporter:
            adkron Amos King
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: