Остерегайтесь других ответов, представляя present?
в качестве ответа на ваш вопрос.
present?
является противоположностью blank?
в рельсах.
present?
проверяет наличие значимого значения.Эти вещи могут не пройти проверку present?
:
"".present? # false
" ".present? # false
[].present? # false
false.present? # false
YourActiveRecordModel.where("false = true").present? # false
В то время как проверка !nil?
дает:
!"".nil? # true
!" ".nil? # true
![].nil? # true
!false.nil? # true
!YourActiveRecordModel.where("false = true").nil? # true
nil?
проверяет, является ли объект на самом деле nil
.Все остальное: пустая строка, 0
, false
, что угодно, не является nil
.
present?
очень полезна, но определенно не противоположна nil?
.Смешение двух может привести к неожиданным ошибкам.
Для вашего случая использования present?
будет работать, но всегда разумно осознавать разницу.