Существует ли идиома Rails / Ruby для проверки, присутствует ли перечислимое значение и имеет ли значения, отличные от nil?
nil
Я получаю ошибки, если я пытаюсь сделать nil.any?, поэтому я всегда должен делать if foo && foo.any?.
nil.any?
if foo && foo.any?
Вы можете использовать метод try, предоставляемый ActiveSupport:
try
obj.try(:any?)
Это оценивается как nil, если obj.nil?, или false, если obj - пустая коллекция, поэтомув обоих случаях это приведет к ложному значению в логическом контексте.
obj.nil?
false
obj
Полагаю, теперь вы можете использовать оператор безопасной навигации:
if foo&.any?
Вы также можете использовать гем andand:
foo.andand.any?