类的地址braintree的超类不匹配

时间:2013-10-23 05:34:30

标签: ruby-on-rails ruby payment braintree

我刚刚安装了braintree支付宝石,现在我在以前工作的页面上收到错误。我有一个名为地址的模型。

superclass mismatch for class Address

这是预期的,因为braintree还有一个名为Address的类?我将如何解决它/修复它?

我使用最新的braintree gem(v2.25),ruby 2.0 on rails 4.0

2 个答案:

答案 0 :(得分:2)

你是对的。 Braintree gem有一个类Address。但是,Address类位于Braintree模块内部。由于它位于模块内部,因此您的类不应与之冲突。当然,除非您的Address类也在名为Braintree的模块中。你应该在irb中看到这种行为:

module Braintree
    class Address
    end
end

module MyModule
    class Address < String #Or ActiveRecord::Base or any class
    end
end

应该可以正常工作,因为您的地址位于不同的模块中。但是,如果它们在同一个模块中:

module Braintree
    class Address
    end
end

module Braintree
    class Address < String #Or ActiveRecord::Base or any class
    end
end

您将看到与上面发布的内容类似的错误。

因此,您的选择是确保您的Address类是唯一命名的,或者确保它位于不同的模块中,并且只要您引用它就引用正确的Address对象。

答案 1 :(得分:0)

原来我安装了2个版本的Braintree(2.16和2.25)。卸载旧版本后,我不再收到错误。