2012-07-28 59 views
0

我有以下的聲明,不工作雖然它使用eval:紅寶石元編程替代EVAL

def resource_name 
    self.class.to_s.match(/(.+)Controller/)[1].singularize 
    end 

    def collection 
    @collection ||= eval "#{resource_name}.all(sort: [[:name, :asc]])" 
    end 

是否有不使用eval這樣做的更好的辦法?

回答

2

如果我理解正確你想從字符串「產品」到恆Product去,所以如果你使用的Rails你可以只使用

Object.const_get(resource_name) 

,你也可以使用constantize哪些有了解的東西就像Module::SomeClass