Я использую OmniAuth в приложении, которое требует аутентификации.
У меня есть 3 способа аутентификации пользователей:
- Создать аккаунт на моем сайте
- Facebook через OmniAuth
- Твиттер через OmniAuth
Для варианта 1 у меня есть проверки в виде:
validates_presence_of :email, :role
validates_presence_of :password, :if => :password_required
validates_presence_of :password_confirmation, :if => :password_required
validates_length_of :password, :within => 4..40, :if => :password_required
validates_confirmation_of :password, :if => :password_required
validates_length_of :email, :within => 3..100
validates_uniqueness_of :email, :case_sensitive => false
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
validates_format_of :role, :with => /[A-Za-z]/
Проблема в том, что, когда я разрешаю пользователю войти в систему через твиттер / фейсбук в первый раз, когда создается учетная запись, проверки запускаются и завершаются ошибкой.
Например:
ActiveRecord :: RecordInvalid - проверка не удалась: пароль не может быть пустым, пароль слишком короткий (минимум 4 символа), подтверждение пароля не может быть пустым:
Это имеет смысл, так как созданные учетные записи OmniAuth не будут отправлять пароль, но я не уверен, как именно мне следует сообщить об этом моей модели и пропустить (конкретные?) Проверки.
Если это необходимо, полная модель account.rb здесь: http://pastie.org/private/wzpftprrzfg42uifetfhpa
Большое спасибо !!