2

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

superclass mismatch for class Address

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

我正在使用最新的 Braintree gem(v2.25),rails 4.0 上的 ruby​​ 2.0

4

2 回答 2

2

你是对的。Braintree gem 有一个类地址。但是,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 对象。

于 2013-10-23T17:14:46.797 回答
0

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

于 2013-10-24T13:37:29.863 回答