Rails如何在强大的参数中绕过需求

时间:2018-08-03 06:29:07

标签: ruby-on-rails

我想传递不带必需参数的参数,如下所示。

def str_params
  params.require(:user).permit(:id, :name)
end

并在没有用户键的情况下传递参数

有什么办法吗?

3 个答案:

答案 0 :(得分:1)

如果您不想传递密钥,可以直接删除require,如下所示

params.permit(:id, :name)

答案 1 :(得分:0)

是的,您可以在控制器中获得params[:id]params[:name]之类的参数。

它将绕过强大的参数。但是始终建议使用强参数。

所以最好是放params.permit(:id, :name)而不是params.require(:user).permit(:id, :name)

答案 2 :(得分:0)

情况1:当您的请求包含根密钥:user时,请像这样使用它:

PERMITTED_PARAMS = %i[id name].freeze

def action_name
  puts str_params
end

def str_params
  params.require(:user).permit(*PERMITTED_PARAMS)
end

情况2:当请求包含顶级用户属性时,在:user键下没有任何嵌套:

def action_name
  # puts params.permit(*PERMITTED_PARAMS)
end