从类名创建对象作为ruby中的字符串

时间:2013-12-26 07:08:02

标签: ruby

我有一个模型源(名称,网址,方法) 该程序解析源的URL以获取数据。现在我有不同的类来解析不同类型的URL:rss,xml,ogdata ......

所以我有一个通用的界面

  

new(url)//解析网址

     

getTitle()//获取数据标题

     

getPrice()//获取价格

我有四个类rss,xml,ogdata。这些类是单独的文件。我的想法是在发现不同类型的页面时添加更多类。我想为网址启动正确的课程。

方法= source.method //我想创建一个在方法

中指定的名称的新类

parser = Rss.new(source.url)//而不是这个 //就像是 解析器=。新(source.url)

2 个答案:

答案 0 :(得分:0)

您可以尝试使用const_get。

例如: -

Kernel.const_get("YourClassNameHere").new

* Kernel.const_get(“YourClassNameHere”)*将为您提供课程。您可以使用它来实例化该类的新实例。

答案 1 :(得分:0)

irb(main):081:0> User.name
=> "User"

然后

"User".constantize.new(name: 'David')

or

User.name..constantize.new(name: 'David')