Ruby On Rails Devise: как можно избежать проверки уникальности электронной почты при регистрации и переписать, чтобы проверить, является ли она уникальной, только если она имеет роль "X" - PullRequest
0 голосов
/ 04 февраля 2019

Я хочу прервать действие регистрации по умолчанию в моем приложении rails, изменив проверку электронной почты.Все, что мне нужно, это иметь уникальное поле электронной почты, ТОЛЬКО если этот пользователь уже зарегистрирован и имеет роль 'X'.

Я пробовал следующее, но мое приложение возвращает "Email has already been taken" сообщение:

проверка:

validates_uniqueness_of :email, {allow_blank: true, if: :already_exists_as_x?}

def already_exists_as_x?
  User.where(email: self.email, role: :X).exists?
end

(буду рад любой помощи)

1 Ответ

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

Предполагая, что ваша модель включает в себя: проверяемый модуль Devise, вы можете удалить этот модуль из вашей модели и написать свои собственные проверки по своему желанию.

В вашей модели (скажем, user.rb) ваш вызов devise содержит:проверяемый как:

devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :validatable, :confirmable, :trackable

Удалить или комментарий: проверяемый из этого вызова, тогда ваши собственные проверки должны работать так, как вы ожидали.

...