Ruby/Rails using || to determine value, using an empty string instead of a nil value
Rails adds presence method to all object that does exactly what you want
input = ''
value = input.presence || "default"
=> "default"
input = 'value'
value = input.presence || "default"
=> "value"
input = nil
value = input.presence || "default"
=> "default"
I usually do in this way:
value = input.blank? ? "default" : input
In response to the case that input might not be defined, you may guard it by:
value = input || (input.blank? ? "default" : input)
# I just tried that the parentheses are required, or else its return is incorrect
For pure ruby (not depending on Rails), you may use empty?
like this:
value = input || (input.empty? ? "default" : input)
or like this (thanks @substantial for providing this):
value = (input ||= "").empty? ? "default" : input