[ruby-on-rails] Testing for empty or nil-value string

I'm trying to set a variable conditionally in Ruby. I need to set it if the variable is nil or empty (0 length string). I've come up with the following:

variable = id if variable.nil? || (!variable.nil? && variable.empty?)

While it works, it doesn't seem very Ruby-like to me. Is the a more succinct way of expressing the above?

This question is related to ruby-on-rails ruby

The answer is


If you're in Rails, .blank? should be the method you are looking for:

a = nil
b = []
c = ""

a.blank? #=> true
b.blank? #=> true
c.blank? #=> true

d = "1"
e = ["1"]

d.blank? #=> false
e.blank? #=> false

So the answer would be:

variable = id if variable.blank?

variable = id if variable.to_s.empty?