ruby - 如何在 Ruby 中覆盖类变量

标签 ruby activemerchant shopify-activemerchant

我试图在 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 被存储为一个类实例变量:

ActiveMerchant::Billing::CreditCard.instance_variable_get(:@require_name)
#=> false

关于ruby - 如何在 Ruby 中覆盖类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264966/

相关文章:

ruby - 如何知道调用了哪个模块用户

ruby-on-rails - 服务器文件通过 scp

ruby-on-rails - 使用 ActiveMerchant 自定义 Paypal Express 的评论页面

ruby-on-rails - Active Merchant 和 Authorize.net 在生产中返回失败

ruby-on-rails - 与 ActiveMerchant 一起使用的最佳支付网关是什么?

ruby-on-rails - rails : Paypal Express implementation fails with undefined method `checkout_thank_you_url'

ruby-on-rails - 无法在 Ubuntu Server 18.04 上安装 Phusion Passenger

ruby - 如何从注释的 HTML 标签中提取文本