It's obviously subjective, but IMHO inline conditionals make code harder to understand, indentation is very important. So I'd definitely take the second approach, but writing it differently to use only one indentation level: existing_transaction = database.find_transaction_by_id(transaction.id) if !existing_transaction database.create_transaction(transaction) elsif !existing_transaction.processed database.update_transaction(transaction) end