Лучше расположить оставшуюся часть кода, чтобы увидеть эту проблему не более чем для последнего объекта в цепочке.
defined?
не будет делать то, что вы хотите.Что-то может быть defined?
и nil
одновременно.
Когда проблема ограничена последним атрибутом в цепочке ссылок:
@object.something.with_something.value if @object.something.with_something
Я мог бы воспользоватьсяфакты, которые:
nil.to_a => []
nil.to_s => ''
nil.to_f => 0.0
nil.to_i => 0
Итак, если вы знаете, что что-то является либо nil
, либо Array
, часто вы можете написать лучший код без каких-либо условий вообще, написавчто-то вроде:
something.to_a.each do |e|
. . .