问题
我使用的是paypal-ruby-sdk,并且库中有一个名为Plan的类,所以对我开玩笑,因为我有一个同名的模型。当我在该模型上调用任何方法时,它只会触发“未定义的方法”,因为它正在调用paypal库。
库:https://github.com/paypal/PayPal-Ruby-SDK
最佳答案
您必须使用Parent::Child
语法引用嵌套类
Paypal's Plan
位于PayPal::SDK::REST::Plan
使用PayPal::SDK::REST::Plan
引用贝宝的计划
使用::Plan
引用您的计划。 (如果您在根名称空间中定义了计划)
(::Plan
表示Plan
在根名称空间下)
所有体面的红宝石库都按以下方式构建,并且仅在根目录下公开一个常量。 (在这种情况下为DecentModule
)
module DecentModule
class ClassA
end
class ClassB
end
end
因此,它们可以避免弄乱根名称空间。
因此,即使我们在根名称空间中定义了
FancyModule::ClassA
,我们也可以引用ClassA
。关于ruby-on-rails - Rails 5-2具有相同名称的类,并调用错误的一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54358316/