Rails идиома для .present?и. любой? - PullRequest
8 голосов
/ 20 марта 2012

Существует ли идиома Rails / Ruby для проверки, присутствует ли перечислимое значение и имеет ли значения, отличные от nil?

Я получаю ошибки, если я пытаюсь сделать nil.any?, поэтому я всегда должен делать if foo && foo.any?.

Ответы [ 3 ]

9 голосов
/ 20 марта 2012

Вы можете использовать метод try, предоставляемый ActiveSupport:

obj.try(:any?)

Это оценивается как nil, если obj.nil?, или false, если obj - пустая коллекция, поэтомув обоих случаях это приведет к ложному значению в логическом контексте.

1 голос
/ 06 февраля 2017

Полагаю, теперь вы можете использовать оператор безопасной навигации:

if foo&.any?
0 голосов
/ 20 марта 2012

Вы также можете использовать гем andand:

foo.andand.any?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...