Условная проверка пароля в Rails - PullRequest
1 голос
/ 02 февраля 2012

В моем приложении у меня есть два способа подписать пользователей:

  1. Форма регистрации
  2. Facebook Connect

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

У меня есть несколько проверок, связанных с паролем, которые я хочу выполнить для первого способа регистрации пользователей, но я не хочуэто произойдет для второго.Каков был бы подходящий и безопасный способ сделать это в Rails?

Моим первым подходом было создание атрибута для пользовательского объекта с именем password_optional и выполнение условия при проверке с этим, но я не уверен, как установить для этого атрибута по умолчанию значение false или установить егов false, когда пользователь регистрируется с помощью формы.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Если у вас нет пароля, когда пользователь регистрируется через Facebook, но ваша проверка требует его, установите для него случайную строку.

Это именно то, что рекомендуется в Разработка документации .

1 голос
/ 02 февраля 2012

Пропускайте проверки, когда они вам не нужны. Есть несколько способов сделать это

Возможно, вы могли бы иметь две модели User::Normal < User и User::Facebook < User. Большая часть логики уходит на пользователя, а специфика - на пользовательские модели.

Может быть, вы могли бы просто пойти validates_presence_of :password, :if => not_facebook? или что-то в этом роде.

...