Ссылка на модель со строковым вводом

Предположим, что я хочу сделать страницу, которая может запросить нужный объект с типом (string) и id (int).

/запрос типа = люди &? ID = 1

выведет меня

Person.find(1)

тогда

/запрос типа = город &ampы;? ID = 123

выведет меня

City.find(123)

Однако у меня возникают проблемы с тем, как перевести строки в желаемый класс модели.

Единственный способ, о котором я могу думать, -

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

Однако этот метод будет довольно проблематичным, если у меня будет больше типов моделей.

Есть ли лучший способ?

Заранее спасибо,

Ответ 1

Попробуйте:

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

Edit:

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