ruby-on-rails – 对通过浏览器提交的参数进行常量化是不好的做法?

我有一个单表继承设置,我有一个控制器(我觉得有多个将是重复的).但是,对于某些方法,我想调用模型的子类.我想我可以让浏览器发送一个参数,我会写一个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])

我的问题:这是一种不好的做法吗?我可以想象有人偷偷摸摸可以制作一个请求,让我形成一个任意的内部对象..但我可以确认该对象是我想要的东西的子类..

解决方法

这样做时,我喜欢用case重构它,只是为了清楚我允许的输入:
@results = case params[:model]
  when 'page'   then Page
  when 'post'   then Post
  else raise 'finger'
end.search(params[:term])

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...