Ruby on rails 类地址树的超类不匹配

Ruby on rails 类地址树的超类不匹配,ruby-on-rails,ruby,payment,braintree,Ruby On Rails,Ruby,Payment,Braintree,我刚刚安装了braintree payment gem,现在我在以前工作的页面上收到一个错误。我有一个名为Address的模型 superclass mismatch for class Address 这是因为braintree也有一个名为Address的类吗?我将如何解决/修复它 我正在使用最新的braintree gem(v2.25),rails 4.0上的ruby 2.0,你说得对。Braintree gem有一个类地址。但是,Address类位于Braintree模块内部。因为它位于

我刚刚安装了braintree payment gem,现在我在以前工作的页面上收到一个错误。我有一个名为Address的模型

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
模块树
班级地址
结束
结束
模块MyModule
类地址
应该可以正常工作,因为您的地址位于不同的模块中。但是,如果它们在同一模块中:

module Braintree
    class Address
    end
end

module Braintree
    class Address < String #Or ActiveRecord::Base or any class
    end
end
模块树
班级地址
结束
结束
模块脑树
类地址
您将看到一个类似于您上面发布的错误


因此,您的选项是确保您的Address类的名称是唯一的,或者确保它位于不同的模块中,并且每当您引用Address对象时,您都引用了正确的Address对象。

事实证明,我安装了两个版本的Braintree(2.16和2.25)。卸载旧版本后,我不再收到错误。

我的address类不在任何模块内。只是一个普通地址类。类地址