我刚刚安装了 Braintree payment gem,现在我在之前正常工作的页面上收到错误。我有一个名为 Address 的模型。
superclass mismatch for class Address
这是预期的吗,因为 Braintree 也有一个名为 Address 的类?我该如何解决/修复它?
我正在使用最新的 Braintree gem (v2.25),Ruby 2.0 on Rails 4.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 对象。
关于ruby-on-rails - 类地址的父类(super class)不匹配 Braintree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19533552/