rails:如何将符号转换为类

dpb*_*dpb 16 ruby-on-rails

给出rails中的符号,我如何获得一个类?所以我可以这样说:

give_class(:post).find(:all)
Run Code Online (Sandbox Code Playgroud)

或类似的.

Mat*_*chu 45

首先,转换为字符串.

class_name = symbol.to_s
Run Code Online (Sandbox Code Playgroud)

从那里,您需要使用ActiveSupport的Inflector提供的方法将字符串格式化为正确的类名.

  • camelize'my_module'变成'MyModule'
  • classify'my_models'变成'MyModel'

camelize 考虑到你的代码片段,你更有可能是你想要的那个.

然后使用constantize方法:

klass = class_name.constantize
Run Code Online (Sandbox Code Playgroud)

优雅!