The Beginner's Guide to Ruby If & Else Statements


How Do You Make Decisions in Ruby?

Like these:

  • “If the room is too cold turn on the heater”
  • “If we don’t have enough stock of this product then send an order to buy more”
  • “If this customer has been with us for more than 3 years then send him a thank you gift”

Things like that are what I mean by making decisions.

If something is true (the condition) then you can do something.

In Ruby, you do this using if statements:

stock = 10

if stock > 1
  puts "Sorry we are out of stock!"
end

Notice the syntax. It’s important to get it right.

The stock < 1 part is what we call a “condition”.

This is what needs to be true for the code inside the condition to work.

In plain English this is saying:

“If the value of stock is less than 1 then print the ‘out of stock’ message, otherwise do nothing.”

Types Of Conditions

In the last example I’m using the “less than” symbol <, but there are other symbols you can use for different meanings.

Here’s a table:

Symbol Meaning
< Less than
> Greater than
== Equals
!= Not equals
>= Greater OR equal to
<= Less OR equal to

Notice that we use two equal == symbols to mean equality!

One equals sign = in Ruby means “assignment”, make sure to use == when you want to find out if two things are the same.

If you don’t this right you won’t get the expected results.

Ruby Unless Statement

With an if statement you can check if something is true.

But when you want to check for “not true” there is two things you can do.

You can reverse the value with !:

if !condition
  # ...
end

Or you can use unless, which is like if, but it checks for “not true”:

unless condition
  # ...
end

The If Else Statement

You can also say “if this is NOT true then do this other thing”:

if stock < 1
  puts "Sorry we are out of stock!"
else
  puts "Thanks for your order!"
end

The else part is always optional, but it can help you write more advanced logic.

You can take this one step further & use an elsif statement:

if stock < 1
  puts "Sorry we are out of stock!"
elsif stock == 10
  puts "You get a special discount!"
else
  puts "Thanks for your order!"
end

With elsif you can say:

“If stock is less than 1 print this message, else if stock equals 10 print this special message, otherwise if none of these are true then print the thank you message.”

How to Use Multiple Conditions

If you’d like to write compound conditions, where you are checking if two things are true at the same time, then this section is for you.

You can do this by using the && operator:

if name == "David" && country == "UK"
  # ...
end

This is saying:

“If the name is equal to ‘David’ and country is equal to ‘UK’ then do something.”

You can also use the || operator:

if age == 10 || age == 20
end

This means:

“If the age is 10 or 20 then do something.”

Notice how these two operators (&&, ||) allow you to combine conditions, but they need to be proper conditions.

In other words, you CAN’T do this:

if age == 10 || 20
end

This is not valid.

You need a full condition on each side (age == 10 || age == 20).

Things to Watch Out For

Just before we end this lesson & want to mention a few problems you may run into & what to do about them.

The first is about comparing strings.

When comparing two strings they must look exactly the same!

Including the “casing”.

This means that “hello” & “Hello” are different words.

You can solve this by making them as equal as possible:

name  = "David"
expected_name = "david"

if expected_name.downcase == name.downcase
  puts "Name is correct!"
end

The key here is the downcase method on name.

By making both strings downcase you can make sure they’ll match if they have the same content.

For example:

“David” becomes “david”, and “david” stays “david”.

Now both are “david” so you can compare them.

Special Symbols in Strings

Another problem you may come across with related to arrays is “special symbols”.

These symbols are for things like new lines n & the tab key t.

The problem is when you try to compare two strings that look the same, but they have one of these special symbols.

To see these special symbols you will need to use the p method:

name = gets
p name

Try this code, type something in, and you will notice that name contains the newline character (which is not normally visible with puts).

To remove this character you can use the chomp method.

name = gets.chomp
p name

Now the newline character (n) is gone, which allows you to compare strings correctly.

If Construct in One Line

It’s possible to write an if statement using just one line of code.

Like this:

puts 123 if 2.even?

Which is the same as:

if 2.even?
  puts 123
end

This is a shorthand version which can be useful if you have a simple condition.

Is There an Alternative?

If you have an if else expression there is also a shorthand for that.

It’s called the ternary operator:

40 > 100 ? "Greater than" : "Less than"

I have another article where you can learn more about how this works & learn about other useful Ruby operators.

Read that, then practice & review what you learned today.

Take notes. Practice. Repeat.

A very important component of learning is repetition, so do this & master Ruby if statements to make progress in your journey of becoming a great Ruby developer.

I know you can do it.

Summary

Conditions allow you to take decisions in your code, this is what makes your program “think”.

You also learned how to use the if statement & the else statement to handle different situations where you want to make decisions.

Finally, you learned about a few things to watch out for, like string “casing” & special symbols.

Now it’s your turn to take action!

Copyright RubyGuides.com