1
我正在使用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以*完全相同的方式在其他地方設置常量*。 –
謝謝Max!喬治,你是對的,但在這種情況下,馬克斯撞上了頭部。我應該把它放在當前的範圍內。 –