如何覆盖 Ruby 中的 class 变量
How to override class variable in Ruby
我试图在 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)
我尝试过其他各种方法。我该如何覆盖它?
您可以覆盖该方法,但设置该方法返回的值更容易:
ActiveMerchant::Billing::CreditCard.require_name = false
在内部,require_name
存储为 class 实例变量:
ActiveMerchant::Billing::CreditCard.instance_variable_get(:@require_name)
#=> false
我试图在 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)
我尝试过其他各种方法。我该如何覆盖它?
您可以覆盖该方法,但设置该方法返回的值更容易:
ActiveMerchant::Billing::CreditCard.require_name = false
在内部,require_name
存储为 class 实例变量:
ActiveMerchant::Billing::CreditCard.instance_variable_get(:@require_name)
#=> false