У меня есть установка наследования одной таблицы, где у меня есть один Контроллер (я чувствовал, что наличие нескольких будет дублировать). Однако для некоторых методов я хотел бы вызвать подклассы моделей. Я подумал, что могу заставить браузер отправлять параметр, для которого я бы написал оператор case. Что-то вроде:
case @model[:type]
when "A"
@results = Subclass1.search(params[:term])
when "B"
@results = Subclass2.search(params[:term])
...
end
С другой стороны, я узнал, что Ruby, несмотря на все свои хитрости, может создать модель из строки. Примерно так:
@results = params[:model].constantize.search(params[:term])
Мой вопрос: это плохая практика? Я могу представить, что кто-то подлый может создать запрос, который заставит меня сформировать произвольный внутренний объект ... но я могу подтвердить, что этот объект является подклассом того, что я хочу ...