rails:如何将符号转换为类

时间:2010-01-29 18:32:28

标签: ruby-on-rails

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

give_class(:post).find(:all)

或类似。

2 个答案:

答案 0 :(得分:44)

首先,转换为字符串。

class_name = symbol.to_s

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

  • camelize会将'my_module'变为'MyModule'
  • classify会将'my_models'变为'MyModel'
根据您的代码段,

camelize更有可能是您想要的那个。

然后使用constantize方法:

klass = class_name.constantize

优等!

答案 1 :(得分:4)

我正在搜索stackoverflow以获得这个答案,并且无法找到它如何找到它,所以我想我会自己问答:

上面的答案是正确的,但我在实际上找到了解释得更好的文档:

基本上有两种方法:

  • .to_s.camelize - 当你有单数形式(:post)时使用
  • .to_s.classify - 当您有复数形式时使用(:帖子)

从那,你打电话给constantize,和Viola!你有你的班级。