我正在使用Spree 2.1并尝试添加新的支付网关,但此错误更为通用,因此Spree本身并不重要。
在向undefined method 'association_class' for nil:NilClass
(source)类添加一些模块后,我遇到了该错误(Spree::PaymentMethod
):
热潮/ payment_method_decorator.rb
Spree::PaymentMethod.class_eval do
include Spree::Core::CalculatedAdjustments
end
(Spree::Core::CalculatedAdjustments
source)
(Spree::Gateway
source)
不幸的是,现在Spree::PaymentMethod
(source)打破了一点,即:
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知识水平的人不必再花上几个小时。
答案 0 :(得分: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
从那时起它正在运作。