Переменная в Ruby в условном модификаторе if
У меня есть вопрос о том, как интерпретатор Ruby назначает переменные:
Я использую это довольно часто:
return foo if (foo = bar.some_method)
где some_method возвращает объект или ноль.
Тем не менее, когда я пытаюсь это:
return foo if (true && (foo = bar.some_method))
Я получаю: NameError: неопределенная локальная переменная или метод foo для main: Object.
Какая разница в оценке между первой и второй строками, которая вызывает ошибку во второй строке?