2013-10-23 34 views
2

我剛剛安裝了braintree付款寶石,現在我在以前工作的頁面上收到錯誤。我有一個名爲Address的模型。超類錯配類地址braintree

superclass mismatch for class Address 

這是預期的,因爲braintree也有一個名爲Address的類?我將如何解決它/修復它?

我使用的是最新的布倫特裏寶石(V2.25),在軌道上4.0

回答

0

原來我安裝了2個Braintree版本(2.16和2.25)。卸載較舊的之後,我不再收到該錯誤。

2

你是正確的紅寶石2.0。 Braintree寶石有一個類地址。但是,地址類位於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對象。

+0

我的地址類不在任何模塊內。只是一個普通的地址類。類地址<的ActiveRecord :: Base的 belongs_to的:用戶 的has_many:運送 的has_many:訂單 belongs_to的:狀態 的has_many:卡 驗證:街道,存在:真 驗證:城市,存在:真 驗證:STATE_ID,存在:true validates:zip,presence:true end 我不想把它放在模塊中。這是否意味着我必須更改我的Address類名稱。 – manni