Вы определили все методы в этом классе как методы экземпляра, которые должны вызываться для экземпляра класса (например, Test.find (4)), а не для самого класса (просто Test). Так что-то вроде этого должно работать:
Test.new(4).even_or_odd(4) => true
Однако ... то, как мы изложили метод с аргументом, означает, что мы проверяем, является ли аргумент четным / нечетным, а не номером тестового объекта. Итак:
Test.new(4).even_or_odd(5)
Сбросит атрибут 'number' теста на 5, а затем проверит этот номер. Я предполагаю, что вы хотите проверить атрибут номера экземпляра Test, а не аргумент, который вы предоставляете, поэтому попробуйте:
class Test
def initialize(number)
@number = number
end
def even_or_odd
if @number % 2 == 0
puts "Even"
else
puts "Odd"
end
end
end
Это позволит вам выполнить:
Test.new(4).even_or_odd
Я удалил бит attr: accessor, чтобы сделать его более понятным, но не стесняйтесь включать его, если вам не нравится каждый раз вызывать @number.