Se a condição de um if for var.nil?, então para o compilador o tipo de var no bloco then será tido como Nil e no bloco else como não-Nil:
if
var.nil?
var
then
Nil
else
a = alguma_condicao ? nil : 3 if a.nil? # aqui a é Nil else # aqui a é Int32 end