Как переопределить переменную класса в 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