Portanto, você tem um método em Ruby que deseja ter um valor padrão para um parâmetro.
exemplo:
my_method(param='default string')
puts param
end
// calling the method
my_method()
// => default string
Isso funciona conforme o esperado, os padrões de parâmetros omitidos corretamente. Mas o que acontece quando você passa o valor de outra variável que pode ou não ser nula?
strings = {headline: 'my headline', body: nil}
my_method strings[:body]
// => nil
O que aconteceu? Achei que tivéssemos definido um padrão para o parâmetro. Bem, o padrão só funciona se o parâmetro for omitido, não se for falsamente como eu assumi em algumas ocasiões.
Isso entra em ação quando você está extraindo valores dinâmicos de objetos para passar como parâmetros, e você não sabe se o parâmetro que está passando é falsey ou não.
Solução?
Defina o parâmetro como nulo e, em seguida, verifique se há falsidade.
exemplo:
my_method(param=nil)
param ||= 'default string'
puts param
end
// calling the method
my_method()
// => default string
my_method nil
// => default string
Portanto, esta solução cobre ambas as situações, o parâmetro é omitido, ainda é padronizado para sua string, e também se um valor nil for passado como o parâmetro.