我遇到以下情况:
有
ModuleA::ModuleB::ClassC.do_something
在do_something的定义中我需要使用应用程序中的模型
def do_something
...
data = Order.all
...
end
但也存在一个模块
ModuleA::Order
所以我收到错误
undefined method `all' for ModuleA::Order:Module
我通过
找到了解决方案def do_something
...
data = Kernel.const_get('Order').all
...
end
返回模型。我的问题是: 什么是最好的方法呢?有更清洁的解决方案吗? (尽管事实上,对于Class和Module具有相同的名称,这不是最好的想法,但它不能在这里改变......)
答案 0 :(得分:20)
使用::
方法中的do_something
前缀类名...
def do_something
...
data = ::Order.all
...
end