1

我正在使用 Spree 2.1 并尝试添加新的支付网关,但这个错误更普遍,所以 Spree 本身在这里并不那么重要。

undefined method 'association_class' for nil:NilClass在将一些模块添加到Spree::PaymentMethod)类后,我遇到了该错误( ):

spree/payment_method_decorator.rb

Spree::PaymentMethod.class_eval do
  include Spree::Core::CalculatedAdjustments
end

Spree::Core::CalculatedAdjustments 来源

Spree::Gateway 来源

不幸的是,现在Spree::PaymentMethodsource)有点中断,即:

n = Spree::PaymentMethod.first
=> #<Spree::Gateway::Bogus id: 1, (...)>
n.save
=> undefined method 'association_class' for nil:NilClass
n.calculator
=> undefined method 'association_class' for nil:NilClass

有谁知道为什么会发生这种情况以及如何解决它?

事实上,我已经有了答案(经过几个小时的努力),但也许有人会给出一个更好的答案,并给出适当的解释。也许答案很明显,但它不适合我,我找不到任何与 SO 相关的东西,所以希望其他具有类似 RoR 知识水平的人不必再花几个小时在这上面。

4

1 回答 1

0

所以答案是:

正如在上面的链接中可见的那样,它Spree::Gateway是继承自Spree::PaymentMethod并且我的自定义付款方式是从Spree::Gateway类继承的 - 例如:

module Spree class Gateway::CustomMethod < Gateway end end

我所要做的就是Spree::Core::CalculatedAdjustments包括Spree::Gateway

Spree::Gateway.class_eval do include Spree::Core::CalculatedAdjustments end

从那时起它就开始工作了。

于 2016-05-15T14:50:36.203 回答