【发布时间】:2017-08-19 07:03:59
【问题描述】:
我正在使用 Grape API,并且我的模型具有 url 属性,我正在使用该属性来动态安装端点。我需要能够对它们进行版本控制,但在生成它们时无法正确命名它们。
如果我在模块中创建一个类,该类是命名空间的。
module MyModule
module SubModule
class MyClass
end
end
end
=> nil
MyModule::SubModule::MyClass
=> MyModule::SubModule::MyClass
但是,如果我在模块中动态创建类,则它没有命名空间。
module MyModule
module SubModule
dynamic_name = "ClassName"
Object.const_set(dynamic_name, Class.new)
end
end
=> ClassName
MyModule::SubModule::ClassName
NameError: uninitialized constant MyModule::SubModule::ClassName
ClassName
=> ClassName
有没有办法为动态创建的类命名空间?
【问题讨论】:
-
你可以
const_set,不需要Object. -
好吧,你明确地告诉Ruby在
Object中设置常量,你期待什么?您可以明确地告诉 Ruby 以完全相同的方式将常量设置在其他位置。 -
谢谢麦克斯! Jorg,你是对的,但在这种情况下,Max 一针见血。我应该在当前范围内设置它。
标签: ruby ruby-grape