【发布时间】:2012-02-27 09:37:01
【问题描述】:
假设我希望创建一个可以使用 type(string) 和 id(int) 查询所需对象的页面。
/query?type=people&id=1
会来接我
Person.find(1)
而
/query?type=cities&id=123
会来接我
City.find(123)
但是,我对如何将字符串转换为所需的模型类有疑问。
我能想到的唯一方法是
case params[:type]
when 'people'
@object = Person.find(params[:id])
when 'cities'
@object = City.find(params[:id])
end
但是,如果我有更多类型的模型,这种方法会很成问题。
有没有更好的办法?
提前谢谢你,
【问题讨论】:
-
如果您尝试自动执行此操作,您最终可能会遇到攻击者可以发送“/query?type=TOP_SECRET_TABLE&id=1”并获取不应被允许访问的信息的情况。小心你的愿望。
-
它实际上是用于标记对象的ajax。所以我的下一步就像@object.tags
标签: ruby-on-rails ruby