首页 > 解决方案 > 强参数中允许的提交的数组参数消失

问题描述

在 Rails 5.0.2 api 中遇到强参数问题。我无法发布确切的代码,但参数收集在一个方法中,然后用于控制器中的创建操作。

def create
     render_json Model.create(create_params_method)
end

def create_params_method
     create_params = params.require(:model).permit(:name, array_of_ids: [])
     create_params
end

当我提交请求时,params包含array_of_params参数,但是当它通过 params 方法运行时,它消失了,我只有名字。试图找出array_of_ids被拒绝的地方/原因,但到目前为止还没有运气。我一直使用堆栈寻求帮助,如果需要,我可以提供更多信息,但这是我第一次真正提出问题,所以请多多包涵。

标签: ruby-on-rails

解决方案


因为params.require(:model).permit(:name, array_of_ids: [])does 是过滤掉mentioned paramsfrom received params,所以如果你有其他东西,它就会消失。例如,如果您收到

user: {id: 1, name: 'sahil', last_name: 'grover', roles: [1,2,3], is_admin: true}

你的参数过滤器是

params.require(:user).permit(:id, :name, :last_name, roles: [])

那么你会得到的结果是

{id: 1, name: 'sahil', last_name: 'grover', roles: [1,2,3]}

is_admin将被删除,因为它未在 中列出permitted params


推荐阅读