На протяжении модуля 2 в Flatiron School (Ruby on Rails) я продолжал видеть, как метод .try используется в примерах (особенно для аутентификации по паролю), и не совсем понимал, что делает этот метод. Это просто казалось некоторой магией Rails, как и все остальное, и я не знал, как правильно ее использовать, поэтому я провел небольшое исследование, и на самом деле это действительно полезный метод.

Одно место, где .try действительно полезно и часто используется, - это метод входа в систему // контроллер сессий. Здесь, в строке 18, код немного сложнее, чем необходимо. Сначала я нахожу пользователя по электронной почте, которую он вводит в форму входа. Затем, чтобы подтвердить пароль пользователя, я сначала должен сказать, есть ли пользователь (если @ user), И если пароль этого пользователя правильный, затем войдите в систему этого пользователя. Это немного повторяется, и место, где появляется .try пригодится.

Что делает метод .try (согласно документации), так это то, что он вызывает метод, вызываемый в качестве первого аргумента в .try, и вызывает его на приемнике, как и любой другой метод. Полезно то, что если получатель (здесь @ user) не отвечает на метод, вместо прерывания и выдачи ошибки он просто возвращает nil. Так! В методе входа вы можете увидеть, где это может быть полезно. Если пользователь вводит неправильный адрес электронной почты или не имеет учетной записи, они не будут существовать в базе данных и не будут найдены методом User.find_by. Но тогда следующая строка не прерывается из-за этого, и в коде нет лишних операторов if и.

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

Его довольно просто использовать, хотя на первый взгляд это не кажется простым! Я обязательно продолжу использовать .try в моем коде Rails, чтобы немного очистить ситуацию и предотвратить ошибки, и, надеюсь, этот блог помог прояснить это и для вас.