Ruby 'is_a?' класса или модуля (TypeError)

Я играю с Ruby и пытаюсь создать небольшую программу банковских счетов. Когда я запускаю эту конкретную строку кода, которая работает с create_account:

unless @response.is_a? Integer && @response.to_str.length == 4
    puts "Your response must be 4 numbers in length."
    create_account
else
    @pin = @response
    puts "Your pin has been set."
end

Получаю этот ответ:

bank_account.rb:24:in 'is_a?':class or module required (TypeError)
    from bank_account.rb:24:in 'create_account'
    from bank_account.rb:47:in '<main>'

Я не могу точно понять, что происходит, но я включаю остальную часть моего кода. Это неполное, очевидно, потому что я застрял в этой части. Я прохожу через цикл while и вводим "Создать учетную запись", чтобы запустить метод create_account. Моя цель - запустить условное выражение и потребовать от пользователя ввести 4-значное целое число, например, любой номер вывода ole. Если это не целое число или 4 цифры в длину, я вызываю метод create_account, чтобы заставить их начать работу.

Я запускаю ruby ​​2.0.0, если эта информация необходима, но я ставлю, скорее всего, это больше связано с моим кодом. Stackoverflow для меня новичок, поэтому я приношу свои извинения, если этот вопрос задан. Я попытался сделать домашнее задание, как советуется, прежде чем задавать вопрос, но я все еще в тупике. Любая помощь приветствуется.

Ответы

Ответ 1

Вам нужно поставить класс Integer в круглые скобки:

unless @response.is_a?(Integer) && @response.to_str.length == 4

На самом деле вы evaulating is_a? на (Integer && @response.to_str.length == 4), который является логическим значением, а не классом или модулем.