我刚刚安装了 Braintree 支付 gem,现在我在以前工作的页面上收到错误消息。我有一个名为地址的模型。
superclass mismatch for class Address
这是预期的,因为 Braintree 也有一个名为 Address 的类吗?我将如何解决它/修复它?
我正在使用最新的 Braintree gem(v2.25),rails 4.0 上的 ruby 2.0
我刚刚安装了 Braintree 支付 gem,现在我在以前工作的页面上收到错误消息。我有一个名为地址的模型。
superclass mismatch for class Address
这是预期的,因为 Braintree 也有一个名为 Address 的类吗?我将如何解决它/修复它?
我正在使用最新的 Braintree gem(v2.25),rails 4.0 上的 ruby 2.0
你是对的。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 对象。
结果我安装了 2 个版本的 Braintree(2.16 和 2.25)。卸载旧版本后,我不再收到错误消息。