1

我正在尝试在https://github.com/activemerchant/active_merchant/blob/master/lib/active_merchant/billing/credit_card.rb的第 315 行覆盖“requires_name”方法或其变量,以便检查第 328 行不执行。在澳大利亚,通常不会在付款过程中收集卡名,所以我试图输入 nils。我没有得到任何工作。

我试过 class_variable_set 像:

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

我在这里试过 requires_name 和 require_name 。没有不同。

我试过了:

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

我已经尝试过其他各种事情。我如何覆盖它?

4

1 回答 1

4

您可以覆盖该方法,但设置该方法返回的值更容易:

ActiveMerchant::Billing::CreditCard.require_name = false

在内部,require_name存储为类实例变量

ActiveMerchant::Billing::CreditCard.instance_variable_get(:@require_name)
#=> false
于 2018-01-15T14:39:15.727 回答