Если быть точным, моя проблема возникла, когда я читал исходный код 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 ложным?