力等级装卸(RoR)

Dan*_*ark 3 ruby ruby-on-rails

我正在从这样的字符串加载一个类

Kernel.const_get(some_class_name).new
Run Code Online (Sandbox Code Playgroud)

哪个有效,但这样做的正确方法是什么?

更重要的是,有没有办法卸载课程?我试过了

Object.send(:remove_const, some_class_name)
Run Code Online (Sandbox Code Playgroud)

但这与上课之前的情况不一样.

注意:与相关.

Sim*_*tti 7

既然您使用Rails标记了问题,那么您可以这样做

some_class_name.constantize
Run Code Online (Sandbox Code Playgroud)

"User".constantize
# => User
Run Code Online (Sandbox Code Playgroud)

remove_const工作,但您需要从定义常量的对象空间调用它.另外,请记住将符号作为常量名称传递.

Object.send(:remove_const, :Foo)
Run Code Online (Sandbox Code Playgroud)