Ruby Magic Code using Boolean after nil check for gender

Viewed 80

I love ruby magic code and I want try to get value from boolean after null check without using call string again.

I have column ismale structure tinyin(Boolean) and have null

if null == "Unknown"
if true == "Male"
if false == "Female"

I have

@user.ismale.nil? ? "Unknown" : @user.ismale ? "Male" : "Female"

I dont want to call @user.ismale 2 times

@user.ismale.nil? ? "Unknown" : ? "Male" : "Female"

can I get this magic code ?

Thank you

1 Answers

You could use a case expression:

case @user.ismale
when true
  "Male"
when false
  "Female"
else
  "Unknown"
end

Or a hash:

{ true => "Male", false => "Female", nil => "Unknown" }[@user.ismale]

or using a fallback value:

{ true => "Male", false => "Female" }.fetch(@user.ismale, "Unknown")
Related