2016-09-10 2 views
0

Я работаю через Ruby on Rails Tutorial, а в exercises for 10.1.2 - Unsuccessful Edits меня просят проверить, правильно ли приложение использует недопустимые формы.Рельсы: убедитесь, что пароль присутствует, если задано пароль_подтверждения

Возможно, я сделал упражнение слишком тщательно - я обнаружил, что он «действителен» для отправки пароля nil с помощью пароля nil password_confirmation.

Я думал, что has_secure_password поймает это?

1) Почему нет?

2) Как я могу гарантировать, что если password равно password_confirmation?

я в настоящее время: validates :password, presence: true, length: { minimum: 6 }, allow_nil: true

Я попытался добавить , confirmation: true, но это не помогает.

+0

Попробуйте удалить allow_nil: истинный –

+0

'nil' требуется для страницы редактирования профиля - пользователь не должен быть необходимо ввести пароль и подтверждение, если они просто хотят изменить настройку профиля. –

+0

Обновление будет срабатывать только по атрибутам, которые вы меняете, я думаю. Попробуйте, если у вас еще нет. –

ответ

0

Добавить validates, который имеет отношение только основанный на булево:

validates :password, presence: true, if: :password_confirmation_given? 

def password_confirmation_given? 
    password_confirmation.nil? ? false : !password_confirmation.empty? 
end 
0

Если вы хотите придумать валидации, вы можете добавить к своей модели модуль validatable.

devise 
    :validatable 

Если вы хотите рельсы, чтобы проверить его можно использовать

validates_confirmation_of :password 

Если вы все еще возникают проблемы, проверьте, как вы инициализации сильные параметры и/или разместить свой код Params.

Смежные вопросы