Как переопределить переменную класса в Ruby

Я пытаюсь переопределить метод 'require_name' или его переменную в строке 315 https://github.com/activemerchant/active_merchant/blob/master/lib/active_merchant/billing/credit_card.rb чтобы выполнить проверку в строке 328 не выполняется. В Австралии имя карты обычно не собирается во время оплаты, поэтому я пытаюсь передать в ноль. Я не получил ничего, чтобы работать.

Я пробовал class_variable_set как:

ActiveMerchant::Billing::CreditCard.class_variable_set(:@@requires_name, Proc.new do
    false
end)

Я пробовал require_name и require_name здесь. Нет разницы.

Я пробовал:

ActiveMerchant::Billing::CreditCard.requires_name = Proc.new do
    false
end)

Я пробовал разные вещи. Как мне переопределить это?

1 ответ

Решение

Вы можете переопределить метод, но проще установить значение, которое возвращает метод:

ActiveMerchant::Billing::CreditCard.require_name = false

Внутренне require_name хранится как переменная экземпляра класса:

ActiveMerchant::Billing::CreditCard.instance_variable_get(:@require_name)
#=> false
Другие вопросы по тегам