2012-07-03 88 views
0

我有一个类Test它在lib文件夹中,我想在我的控制器类名称class UsersController < ApplicationController的一个方法内动态创建此类的对象。我怎样才能做到这一点?在Ruby on Rails中动态加载类

class UsersController < ApplicationController 
    def address 
    {"here I want to create the object of Test class"} 
    end 
end 
+0

你是什么意思下的“动态”?你想实例化它或什么? – Matzi

+0

是的,我正好想实例化它,但在此之前,在我的控制器类中没有任何Test类的引用(我没有在UserController类中包含Test Class)。所以在运行时,我想添加Test类的引用,并且使Test类的对象和访问Test类的方法。 – Ganesh

回答

1

在Ruby中,你不能像在C++创建对象,你可以用Object::new方法只创建动态对象。因此,要建立Test类,你写的简单实例:

test = Test.new 
+0

但我希望测试类的对象在运行时和编译前我的控制器类不知道测试类的任何引用意味着我不包括测试类到控制器类中。 – Ganesh

+0

那么问题是什么?如果你的测试类在'lib'中,那么它将在需要时自动加载。 – Hauleth

0

中有红宝石没有compilition。如果测试是在c的主要范围中定义的,那么Test就是不变的,可以在任何地方使用。

0

Ruby是解释型语言,所以没有编译phase.in config/application.rb加载lib文件夹或文件,因此启动时会自动加载这些文件。现在如果你想要所有方法的测试类实例只需创建方法创建实例并加载方法之前使用before_filter