如何从Rails中的名称字符串实例化类? [英] How to instantiate class from name string in Rails?

查看:58
本文介绍了如何从Rails中的名称字符串实例化类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们如何在Ruby-on-Rails中从名称字符串实例化类?

例如,我们在数据库中将其名称像 ClassName或 my_super_class_name这样的格式。

For example we have it's name in database in format like "ClassName" or "my_super_class_name".

如何从中创建对象?

Solution:

我自己在寻找它,但没有找到,所以在这里。
Ruby-on-Rails API方法

Was looking for it myself, but not found, so here it is. Ruby-on-Rails API Method

name = "ClassName"
instance = name.constantize.new  

它甚至可以不格式化,我们可以使用字符串方法 .classify

It can be even not formatted, we can user string method .classify

name = "my_super_class"
instance = name.classify.constantize.new

当然,这可能不是'Rails Way',但它解决了它的目的。

Of course maybe this is not very 'Rails way', but it solves it's purpose.

推荐答案

klass = Object.const_get "ClassName"

关于类方法

class KlassExample
    def self.klass_method
        puts "Hello World from Class method"
    end
end
klass = Object.const_get "KlassExample"
klass.klass_method

irb(main):061:0> klass.klass_method
Hello World from Class method

这篇关于如何从Rails中的名称字符串实例化类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆