Unfortunately, it's not actually an initialiser. Type confusion is really common in Ruby programs, sadly.
The construct in parent assigns 1 if foo is "falsey", not strictly if it is nil. Even if foo is already initialised but contains a "falsey" value it will be assigned 1.
It's much cleaner, doesn't pollute the code with extra stuff not pertinent to the problem (if, end), and keeps it straight to the point.
It's not at all different to tons of other constructs, like:
or: