.nil?
может использоваться для любого объекта и имеет значение true, если объект равен нулю.
.empty?
может использоваться для строк, массивов и хэшей и возвращает true, если:
- Длина строки == 0
- Длина массива == 0
- Длина хеша == 0
Выполнение .empty?
на чем-либо, равном нулю, приведет к NoMethodError
.
Вот тут и приходит .blank?
. Он реализован Rails и будет работать с любым объектом, а также работать как .empty?
со строками, массивами и хешами.
nil.blank? == true
false.blank? == true
[].blank? == true
{}.blank? == true
"".blank? == true
5.blank? == false
0.blank? == false
.blank?
также оценивает true для строк, которые не являются пустыми, но содержат только пробелы:
" ".blank? == true
" ".empty? == false
Rails также предоставляет .present?
, что возвращает отрицание .blank?
.
Array gotcha: blank?
вернет false
, даже если все элементов массива пустые. Чтобы определить пустоту в этом случае, используйте all?
с blank?
, например:
[ nil, '' ].blank? == false
[ nil, '' ].all? &:blank? == true