我真的试过了有很多问题,但许多开发人员说“这对我不起作用;我是其中之一——据说是这样说的。
我在读关于猴子修补铁轨宝石的最佳方法我找到了few但决定使用this method
我想用猴子修补xeroizer gem而不是invoice.rb model

# lib/xeroizer/invoice/invoice_url.rb

module Xeroizer
  module Invoice
    module InvoiceUrl
      def invoice_url(id)
        @application.http_get(@application.client, "#{url}/#{CGI.escape(id)}/OnlineInvoice")
      end
    end
  end
end

使用“this method”链接,我认为这应该有效,但它确实有效。
控制器:
include Xeroizer::Invoice::InvoiceUrl
# Invoice.include Xeroizer::Invoice::InvoiceUrl

def some_method
  # @xero is in a private method. It's here for short demonstration
  @xero = Xeroizer::PrivateApplication.new("MY_CONSUMER_KEY", "MY_SECRET_KEY", "#{Rails.root}/privatekey.pem")
  Rails.logger = @xero.Invoice.invoice_url("ad61ea97-b9e9-4a1e-b754-7c19e62f8cd7")
end

Xeroizer::Record::InvoiceModel的未定义方法“invoice-url”
如何将自定义方法添加到rails gem的类中?

最佳答案

假设您正在尝试用Xeroizer::Record::InvoiceModelXeroizer::Invoice::InvoiceUrl进行monkey补丁,那么在第一次提到Xeroizer::Record::InvoiceModel之后,您可以执行以下操作(使Rails自动加载它):

Xeroizer::Record::InvoiceModel.prepend Xeroizer::Invoice::InvoiceUrl

这将覆盖原始的invoice_url方法原始的仍然可以使用super从预处理的调用。

10-08 02:01