Em Ruby, uma string vazia não avalia como false
. Portanto, se você escreveu algo como:
class User
def greeting
"Hey #{self.first_name || 'you'}"
end
end
Você acabaria com “Ei” mesmo quando estivesse first_name
vazio, o que, claro, é aceitável, mas não tão bom quanto “Ei, você”.
Depois de pesquisar return receiver if true
, finalmente encontrei uma extensão que Ruby On Rails fornece na classe Object, chamada #presence
. Dos documentos:
Retorna o receptor se estiver presente, caso contrário retorna nulo.
O que o torna extremamente útil para o nosso exemplo acima, e agora você pode escrever:
class User
def greeting
"Hey #{self.first_name.presence || 'you'}"
end
end
Muito bom mesmo.