Ruby - присваивание переменной только тогда, когда результат не ложен - PullRequest
0 голосов
/ 07 сентября 2018

Если быть точным, моя проблема возникла, когда я читал исходный код has_secure_password и, наконец, метод аутентификации.

def authenticate(unencrypted_password)
    BCrypt::Password.new(password_digest) == unencrypted_password && self
end

Я хочу, чтобы переменная экземпляра содержала пользователя, но только когда результат метода аутентификации возвращает пользователя, а не ложь.

unless @user = user.authenticate(...)
  ...
end

Теперь я хочу получить доступ к переменной @user в методах, вызываемых позже. Я попытался использовать оператор безопасной навигации, но он работает только в том случае, если @user равен nil, а не false. По сути, я не хочу проверять, является ли @user ложным, когда я вызываю метод для пользователя. Метод не должен вызываться при работе с неаутентифицированным пользователем. Есть ли короткий способ написания таких утверждений или мне нужно каждый раз проверять, является ли @user ложным?

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