Когда вы говорите это:
b = a && b.present?
Вы объявляете b
как локальную переменную, но она будет nil
, пока не будет оценена правая часть назначения. В частности, b
будет nil
, когда вы назовете present?
, и соединение будет ложным, делая b
ложным.
Когда вы делаете это:
a = 'pancakes'
b = a
b.present?
b
будет иметь значение 'pancakes'
при вызове present?
, поэтому вы получите истинное возвращение от b.present?
.