使用字符串输入引用模型

让我们说我希望创建一个页面,可以使用类型(字符串)和id(int)查询所需的对象。

/查询?类型=人&ID = 1

会接我的

Person.find的(1)

/查询?类型=城市&ID = 123

会接我的

City.find(123)

但是,我在如何将字符串转换为所需的模型类方面存在问题。

我能想到的唯一方法是

case params[:type] when 'people' @object = Person.find(params[:id]) when 'cities' @object = City.find(params[:id]) end 

但是,如果我有更多类型的模型,这种方法将会很成问题。

有没有更好的办法?

先感谢您,

尝试:

 klass = params[:type] klass.singularize.classify.constantize.find(params[:id]) 

编辑:

 @object = params[:type].singularize.classify.constantize.find(params[:id])