Я добавляю функцию сброса пароля в мое приложение Rails, которое использует Authlogic. Я следовал этому руководству: http://www.binarylogic.com/2008/11/16/tutorial-reset-passwords-with-authlogic/ и все работает, как хотелось бы, за исключением одного: форма сброса пароля принимает пустые пароли и просто не меняет их.
Я искал вокруг и узнал, что это предполагаемое поведение по умолчанию, потому что оно позволяет вам создавать пользовательские формы редактирования, которые изменяют пароль пользователя, только если он вводит новый, и игнорируют его в противном случае. Но в этом случае я специально хочу обеспечить проверку пароля, как при первоначальной регистрации пользователя. Я нашел два возможных решения этой проблемы, но не смог выяснить, как реализовать любой из них.
1) Кто-то задавал этот же вопрос в группах Google:
Модель пользователя сохраняется с пустым паролем
Ответом Бена было использование @user.validate_password = true
для принудительной проверки пароля. Я пробовал это, но я получаю неопределенную ошибку метода: undefined method 'validate_password_field=' for #<User>
.
2) Кажется, есть опция конфигурации Authlogic под названием ignore_blank_passwords
. Это задокументировано здесь:
Модуль: Authlogic :: ActsAsAuthentic :: Password :: Config # ignore_blank_passwords
Похоже, что это сработает, но, насколько я понимаю, это глобальная опция конфигурации, которую вы используете при первоначальном вызове acts_as_authentic
в модели User, и я не хочу менять его во всем приложении, так как У меня есть обычная форма редактирования для пользователей, где я хочу, чтобы пустые пароли по умолчанию игнорировались.
Кто-нибудь нашел решение этой проблемы? Я вижу validate_password=
в журнале изменений для Authlogic 1.4.1, и с тех пор ничего не было удалено. Я просто использую это неправильно? Есть ли способ использовать ignore_blank_passwords
для каждого запроса?