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.
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.”
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:
|>=||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.
if statement you can check if something is
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
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:
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.”
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
if name == "David" && country == "UK" # ... end
This is saying:
name is equal to ‘David’ and
country is equal to ‘UK’ then do something.”
You can also use the
if age == 10 || age == 20 end
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).
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
By making both strings downcase you can make sure they’ll match if they have the same content.
“David” becomes “david”, and “david” stays “david”.
Now both are “david” so you can compare them.
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
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
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
To remove this character you can use the
name = gets.chomp p name
Now the newline character (
n) is gone, which allows you to compare strings correctly.
It’s possible to write an if statement using just one line of code.
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.
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.
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!