2013-10-24 20 views
1

我最近安裝了Braintree付款寶石。它與我的Address模型相沖突,因爲Braintree也有自己的Address模型,所以我將我的Address模型移動到了我自己的模塊中。受保護的方法`新'要求Braintree ::地址:類

module MyModule 
    class Address < ActiveRecord::Base 
    end 
end 

但是我每次使用的地址的時候,我有前綴MyModule的::地址,否則它使用布倫特裏::地址默認情況下,如果我不使用MyModule的前綴。

我該如何告訴rails默認使用MyModule :: Address?

+0

我不知道是否有一種方法在默認情況下做到這一點,但我一直通過討論我的課程AAddress,或者通過分配寶石並更改它們的代碼來更好地適應我來解決它。然後在你的gemfile中,你可以指向你自己創建的gem。 – joncodo

+0

你也可以用另一個名爲「TrueAddress」的對象包裝你的類,並讓它成爲一個類型。如果未指定類型,則可以默認爲您的地址模型。也可以使用你的名字空間,但你必須在它前面加上前綴。 – joncodo

+0

這裏有一些根本性的錯誤.... Braintree :: Address不應該作爲Address來訪問......你在什麼環境下稱這個類? – tihom

回答

2

只是別名Address到你自己的班級。

Address = MyModule::Address 

如果你是布倫特裏模塊內部,你可以使用::語法像這樣訪問類:

::Address