Существует несколько стандартных тестов, предоставляемых Ruby и rails, которые могут помочь, но обычно вам не нужно использовать их все сразу:
# Rails provided Object#blank? method
nil.blank? # => true
false.blank? # => true
''.blank? # => true
[ ].blank? # => true
# Ruby provided Object#nil? method
nil.nil? # => true
false.nil? # => false
''.nil? # => false
[ ].nil # => false
# Ruby class-specific #empty? method
nil.empty? # => error
false.empty? # => error
''.empty? # => true
[ ].empty? # => true
В вашем случае тест, который вы, вероятно, ищете, на самом деле совсем другой. Противоположностью blank?
является present?
, и она очень удобна для подобных ситуаций. Вы даже можете свернуть оба ваших инвертированных логических теста в простой троичный запрос:
- @project_invoice = proj.present? ? proj.invoice : 0
Более подробно это выглядит так:
* * 1010
Настоящий метод проверяет, что переменная представляет не ноль, непустое значение некоторого вида.