具有相同名称的类和模块 - 如何选择一个或另一个?

san*_*xus 9 ruby module ruby-on-rails class

我遇到过以下情况:

ModuleA::ModuleB::ClassC.do_something
Run Code Online (Sandbox Code Playgroud)

在do_something的定义中我需要使用来自应用程序的模型

def do_something
...
    data = Order.all
...
end
Run Code Online (Sandbox Code Playgroud)

但也存在一个模块

ModuleA::Order
Run Code Online (Sandbox Code Playgroud)

所以我收到了一个错误

undefined method `all' for ModuleA::Order:Module
Run Code Online (Sandbox Code Playgroud)

我找到了一个解决方案

def do_something
...
    data = Kernel.const_get('Order').all
...
end
Run Code Online (Sandbox Code Playgroud)

这将返回模型.我的问题是:最好的方法是什么?有更清洁的解决方案吗?(尽管事实上,Class和Module具有相同的名称,但这不是最好的主意,但这里不能改变......)

idl*_*ers 20

::do_something方法中添加类名称...

def do_something
...
    data = ::Order.all
...
end
Run Code Online (Sandbox Code Playgroud)