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)