问题

我使用的是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/

10-10 16:48