item.currency if item.currency != :usd unless item.nil?Based on reading the code I assumed it worked as expected; however, having never actually tried it myself I decided to hit irb for a moment with the following code.
p 3 unless p 2 unless p 1Sure, I'm not using
if, but if and unless have the same precedence, so I thought the example was good enough.p 3 unless p 2 unless p 1
# >> 1
# >> 2
# >> 3The output shows the execution order: The rightmost if (or unless) is evaluated first and then it moves to the next conditional immediately to it's left.
Of course, the statement could be rewritten simply using ||.
item.currency unless item.nil? || item.currency == :usdDue to short circuit evaluation neither statement executes
item.currency != :usd if item.nil?.