Как отключить ошибку «неопределенный метод для nil: NilClass»? - PullRequest
0 голосов
/ 28 октября 2019

У меня в контроллерах и представлениях есть куча кода типа current_user.articles или current_user.name. Очевидно, что при отсутствии текущего пользователя это приводит к ошибке. Я мог бы написать что-то вроде current_user && current_user.articles все время, но это повторяется.

Есть ли способ отключить это сообщение об ошибке и просто вернуть предупреждение, если метод вызывается для current_user, но current_user не существует

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Вместо того, чтобы отключить ошибку (которая не выглядит как очень суперская идея), рассмотрите возможность использования оператора рубиновой безопасной навигации, &. или .try.

Обратите внимание, что некоторые люди( вот пример) рассмотрите это как запах кода. Но, IMO, менее вонючий, чем отключение NoMethodError.

0 голосов
/ 28 октября 2019

Вы можете использовать & перед доступом к любому объектному методу или атрибуту, чтобы избежать ошибок. Таким образом, если объект равен нулю, вся цепочка после & будет исключена, а результатом будет ноль.

current_user&.name # User name if current_user exists, nil otherwise
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...