How about returning multiple values?

def valid?
   [ @is_valid_flag, @error_message ]
end