我刚刚安装了braintree支付宝石,现在我在以前工作的页面上收到错误。我有一个名为地址的模型。
superclass mismatch for class Address
这是预期的,因为braintree还有一个名为Address的类?我将如何解决它/修复它?
我使用最新的braintree gem(v2.25),ruby 2.0 on rails 4.0
答案 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)。卸载旧版本后,我不再收到错误。