Params.sort.key它是如何工作的?

时间:2011-04-11 06:34:54

标签: ruby-on-rails

任何人都可以在自己的项目中使用它吗?如果有,怎么样?我知道这有助于减少攻击。

如果我的控制器中有以下内容:

mail_id = params[:mail_id].to_i
user_id = params[:user_id].to_i
token = params[:token]

我应该在哪里写params.sort.key [以及我应该在这里写什么?]

1 个答案:

答案 0 :(得分:2)

我认为这个概念应该如下工作:

你希望'params'哈希看起来像这样:

params = { :mail_id => 1, :user_id => 2, :token => 'foo' }

表示params.keys将返回[:mail_id,:user_id,:token]

params.keys.sort将返回按字母顺序排序的键:   [:mail_id,:token,:user_id]

因此,为了验证参数是否持有您期望它具有的确切键,您可以执行以下操作:

    if params.keys.sort == [:mail_id, :token, :user_id]
       render :text => 'Serving your request'
    else
       render :text => 'Server understood the request, but refuses to serve it, since some of the requested data is missing'
    end

您可以使用控制器中的logger.debug(params.keys)验证'params'哈希的确切内容