Я читаю Michael Hartl's Ruby On Rails Tutorial (3rd). В главе 9 приведен пример, показывающий, как обновлять информацию о пользователе. Я запутался в том, что allow_nil прилагается сюда. Я упростил код, как показано ниже:Как allow_nil пусть пустая строка проходит проверку
class User < ActiveRecord::Base
has_secure_password
validates :password, presence: true, length: { minimum: 6 }, allow_nil: true
end
myuser=User.new(name: "Foo_bar",email: "[email protected]", password: "123456", password_confirmation: "123456")
myuser.save
myuser=User.find(myuser.id)
myuser.update_attributes(name: "Bar_Foo",email: "[email protected]", password: "", password_confirmation: "") # It will succeed! But WHY?
Я понимаю, что allow_nil: true
пропускает проверку, когда значение проверяемого равна нулю. Тем не менее, очевидно, password: ""
не является нулевым значением. Как может allow_nil: true
разрешить пустую строку?
Неправильная пустая строка не равна нулю, и если вы попытались использовать любое значение, отличное от пустой строки, оно также вернет нуль. –
'puts' всегда возвращает nil, это не значит, что' a' равно нулю. Протестируйте его с помощью 'a.nil?' – BroiSatse
метод 'puts' возвращает nil – illusionist