我正在构建一个 rails4 api,我在其中发布了一个嵌套的属性哈希。然而,该模型实际上并没有嵌套的属性或关联。试图通过将一些属性组合成一个组来制作更清晰的 post params 哈希,但让 api 处理解包和强参数验证。
## Example POST params
params[:item][:group] = {
a: true,
b: false
}
但是模型实际上并没有
group
列,属性 a
和 b
是模型上直接的属性。在没有
group
包装器的情况下处理这个问题只是params.require(:item).permit(:a, :b)
但我想让它通过
strong_parameters
与 group
包装器一起提交。我怎样才能做到这一点,但有上面提到的 POST 参数? 最佳答案
您可以在调用操作之前删除所有中间级别:
class YourController < ApplicationController
before_action :flatten_item_params
private
def flatten_item_params
params[:item] = params.require(:item).each_with_object({}) do |(key, value), result|
result.merge!(value)
end
end
def item_params
params[:item].permit(:a, :b)
end
end
关于ruby-on-rails - 解开 Rails POST params 散列并映射到具有强参数的模型属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34246843/