使用字符串输入引用模型

时间:2012-02-27 09:37:01

标签: ruby-on-rails ruby

假设我希望创建一个可以使用type(string)和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

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

有更好的方法吗?

提前谢谢你,

1 个答案:

答案 0 :(得分:38)

尝试:

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

编辑:

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