Pattern branches can add an if guard for extra checks.

Guard Clauses

guard_clauses.rb
score = 
record = { name: "Ada", score: score }

case record
in { name: name, score: value } if value >= 80
  label = "#{name}:great"
in { name: name, score: value } if value >= 60
  label = "#{name}:pass"
else
  label = "review"
end

puts "score=#{score}"
puts "label=#{label}"
score = 
record = { name: "Ada", score: score }

case record
in { name: name, score: value } if value >= 80
  label = "#{name}:great"
in { name: name, score: value } if value >= 60
  label = "#{name}:pass"
else
  label = "review"
end

puts "score=#{score}"
puts "label=#{label}"
score = 
record = { name: "Ada", score: score }

case record
in { name: name, score: value } if value >= 80
  label = "#{name}:great"
in { name: name, score: value } if value >= 60
  label = "#{name}:pass"
else
  label = "review"
end

puts "score=#{score}"
puts "label=#{label}"
pattern guard A guard runs after a pattern matches and can decide whether that branch should be used.