musta-matchers validate_uniqueness_of возвращает область, когда она не определена - PullRequest
0 голосов
/ 28 февраля 2019

Я недавно обновился до rails 5 и в то же время обновил gem musta-matchers.

У меня есть модель User с атрибутом email, электронная почта должна быть уникальной, и эта уникальностьнечувствителен к регистру

class User < ApplicationRecord
   validates :email, uniqueness: { case_sensitive: false }
end

Я тестирую это с помощью rspec

RSpec.describe User, type: :model do
  subject { build(:user) }
  [...]
     it { is_expected.to validate_uniqueness_of(:email).ignoring_case_sensitivity }
end

Но выдает эту ошибку

Expected User to validate that :email is unique, but this could not be proved.
Expected the validation not to be scoped to anything, but it was scoped to :provider instead.

Я использую devise в случае, если этоможет помочь.

вроде как здесь потеряно, тем более что раньше все работало нормально

спасибо большое

1 Ответ

0 голосов
/ 28 февраля 2019

Devise добавляет проверку уникальности по электронной почте, если вы используете проверяемый модуль .Проверки можно рассматривать как кумулятивные, поэтому validates :email, uniqueness: { case_sensitive: false } не заменяет существующую проверку - она ​​просто добавляет другую проверку.

Что вам нужно сделать, это удалить проверяемый модуль:

devise :invitable, :omniauthable, :database_authenticatable, :registerable,
         :confirmable, :recoverable, :rememberable, :trackable

И выполнить проверки самостоятельно.Но я бы действительно подумал, если это хорошая идея в первую очередь.Вы действительно хотите дубликаты foo@example.com и Foo@example.com?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...