Пароль Rails проверяется только в определенных случаях

#ruby-on-rails #login #validation

#ruby-on-rails #аутентификация #проверка

Вопрос:

В моем приложении rails 3 у меня есть форма регистрации пользователя. У меня есть запрос и проверка пароля для регистрации, однако, если пользователь подключается с использованием omniauth, я не могу получить их пароль, что подводит меня к моему вопросу. Как я могу сделать так, чтобы поле пароля не проверялось в определенных случаях?

Я знаю, что могу выполнить user.save(:validate => false), но это отменяет все проверки.

P.S. я смотрел эпизоды 235 и 236 railscasts, однако Райан Бейтс делает это с помощью Devise, и я делаю это с помощью моей собственной системы входа.

Ответ №1:

Вы можете написать свою собственную проверку пароля с проверкой, использует ли пользователь oauth.
Проверьте этот метод: validate(* аргументы и блокировка)

Ответ №2:

вы можете добавить условия для проверки в модели:

 validates_presence_of :password, :unless => :account_from_omniauth?
  

предполагая, что вы также определяете метод

 def account_from_omniauth?
  true if //...your conditions
  false
end