我正在构建一个 Rails API,其模型包含 JSON 类型的属性 data
。 (PSQL)
但是当我尝试发布这样的内容时
{ model: { name: 'Hello', data: { a: 1, b: 2 } } }
Rails 认为 a
和 b
是嵌套 data
关联的属性...它认为它们是不允许的参数。
问题是,{ a: 1, b: 2 }
是我的字段 data
的值。
如何向属性提供 JSON 值?
编辑:
显示的错误是:
Unpermitted parameters: name, provider, confidence, location_type, formatted_address, place_id, types, locality, ...
数据属性的值为{ name: 'Name',provider: 'Provider', ... }
就像我说的,Rails 认为它们是嵌套 data
关联的属性。
日志: Pastebin
最佳答案
如果 key 事先未知,这可能是一个解决方法:
def model_params
data_keys = params[:model].try(:fetch, :data, {}).keys
params.require(:model).permit(data: data_keys)
end
感谢 aliibrahim,阅读讨论 https://github.com/rails/rails/issues/9454 (P.S 似乎强大的参数将支持 Rails 5.1 中的这个用例)
关于json - rails API : Cannot whitelist JSON field attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41746738/