Ruby on rails 引用常量作为字符串

Ruby on rails 引用常量作为字符串,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,在Rails 5的/lib目录中,我有一个类,它位于Ruby模块的名称空间中 我可以使用以下代码引用该类: OrderSyncers::Marketplaces::Walmart.new Object.cont_get("Test").new 在Rails模型中,我有一个marketplace列,其中包含一个市场名称,如“Walmart”。我试图引用Walmart类。注意:Walmart类是OrderSyncers::OrderSync.new的子类 在ruby中,我可以使用以下代码成功调用

在Rails 5的
/lib
目录中,我有一个类,它位于Ruby模块的名称空间中

我可以使用以下代码引用该类:

OrderSyncers::Marketplaces::Walmart.new
Object.cont_get("Test").new
在Rails模型中,我有一个marketplace列,其中包含一个市场名称,如“Walmart”。我试图引用
Walmart
类。注意:
Walmart
类是
OrderSyncers::OrderSync.new
的子类

在ruby中,我可以使用以下代码成功调用类:

OrderSyncers::Marketplaces::Walmart.new
Object.cont_get("Test").new
但是,当我尝试在名称空间引用中引用该类名时,我得到了一个错误

OrderSyncers::Marketplaces::Object.const_get("Walmart").new
错误:

NameError (uninitialized constant OrderSyncers::Marketplaces::Object)

我想使用
Object.const_get(“string”)
的原因是,我可以使用数据库中的字段初始化
OrderSyncers::OrderSync的正确子类。为什么要添加
::Object
?你不需要它

OrderSyncers::Marketplaces.const_get("Walmart").new

你说的是
Walmart
类,但使用的是
Object
,这在该模块中可能不存在。这是如何工作的?你能解释一下吗?这看起来像是对
Marketplaces
的函数调用,但这毫无意义。但它确实有效。Thanks@CannonMoyer:为什么在对象上调用
const\u get
没有意义?这里也发生了同样的事情。我想让我困惑的是,
Marketplaces.const_get
看起来只不过是一个类方法,所以语法相当混乱。我不太明白
Marketplaces.const_get(“沃尔玛”)
如何返回
Marketplaces::Walmart
。在我看来,它似乎会返回
::Walmart
,但这也毫无意义。@CannonMoyer:因为Walmart是一个常量,它属于市场(嵌套在其中)。“Marketplaces.const_get看起来只不过是一个类方法”——这正是它的本质。嗯,实际上它是一个,所以模块有这个方法也就不足为奇了。@CannonMoyer:别担心,总有一天它会点击的。同时,也许可以买一本“编程ruby”