Обратите внимание, что этот код:
if something
return true
else
return false
end
полностью эквивалентно:
!!something
Или напрямую something
, если это логическое значение. Также обратите внимание, что нет смысла писать return
явно при написании последнего выражения метода.
Также старайтесь избегать повторения проверок в хэше. Я бы порекомендовал ick возможно .
Кроме того, в вашем * core_ext * модуле вы можете использовать этот метод:
class Object
def to_bool
!!self
end
end
В конце код выглядит намного более кратким и декларативным:
def has_thing?
things[:something].maybe[:else].maybe[:matters].to_bool
end