2013-10-24 27 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