
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.217.2] |
![]() |
|
Сообщ.
#1
,
|
|
|
Привет всем.
Тут с удивлением обнаружил, что валидация на подтверждение происходит только в том случае, если поле с подтверждением не содержит nil (на примере пароля :password_confirmation не должно быть nil), иначе валидация всегда проходи успешно. Сначала думал, что это баг в 3.1.rc4, но покопавшись сначала в коде а потом и в документации понял, что так и задумано. Только не понял - почему так задумано? Сколько я не видел примеров с валидацией пароле, нигде отдельно не проверялось, что :password_confirmation, :presence => true. Даже в знаминитом туториуле и его переводе про это ни слово не написано. И мне кажется, что это довольно не очевидное поведении. Может кто-нибудь знает, зачем так сделано? |
Сообщ.
#2
,
|
|
|
А если подтверждения не будет, у тебя сразу вылетит ошибка, что поле пустое. Проверка на presence прописывается у основного поля password.
|
Сообщ.
#3
,
|
|
|
если :password_confirmation == "", а :password == "somepassword", будет ошибка, что нет подтверждения, а если :password_confirmation == nil и :password == "somepassword", то ни каких ошибок не будет. так в доках написано и так оно и есть
|
Сообщ.
#4
,
|
|
|
Если оставить поле пустым, то тебе вернется empty string и у тебя вылезет confirmation error. Значения nil у тебя там не будет.
|
Сообщ.
#5
,
|
|
|
Цитата Мохнатый @ Значения nil у тебя там не будет. в том-то и дело, что почему-то там nil возвращается, тестировал на 3.1.rc4 с webrick Добавлено если я ничего не напутал, то для rails request, базовым является Rack::Request, для которого эти params это просто Hash, а если у Hash попросить по несуществующему ключу он вернет nil. как-то так Добавлено не совсем верно описал, там отдельный метод parameters, но тем не мение он возвращает Hash Добавлено опять наврал. не Hash, а HashWithIndifferentAccess, но он только позволяет обращаться к значениям как по строкам, так и по символам, то есть, что hash[:a], что hash["a"] все одинаково, но попрежнему возвращает nil если нет конкретного значения p.s. может я где-то не там ищу? |
Сообщ.
#6
,
|
|
|
Насчет 3.1 не знаю. Я не перейду до официального релиза.
Работай на стабильной версии. Все параметры лежат в params, который есть Hash. Я бы рекомендовал тебе проверить твою формочку и названия полей. |
Сообщ.
#7
,
|
|
|
Мохнатый
что-то сейчас решил по тестить, не воспроизводиться, видать какой-то глюк просто был может поля формы просто не предавались? не знаю. Спасибо всем за внимание ![]() |