json - rails API : Cannot whitelist JSON field attribute

标签 json ruby-on-rails activerecord ruby-on-rails-5

我正在构建一个 Rails API,其模型包含 JSON 类型的属性 data。 (PSQL)

但是当我尝试发布这样的内容时

{ model: { name: 'Hello', data: { a: 1, b: 2 } } }

Rails 认为 ab 是嵌套 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/

相关文章:

ruby-on-rails - 设计 Rspec 注册 Controller 测试在更新时失败,就像它试图确认电子邮件地址一样

mysql - 在 Rails ActiveRecord 迁移中数据类型映射到 MySQL

ruby-on-rails - Rails + ActiveRecord + Postgres : How to match case insensitive substring?

json - 尝试在 GAS 中创建 GCM 通知 key 时出现错误 "NOT A JSON REQUEST"

javascript - 带有键值的 ng-if 条件 - Angular js

javascript - 如何在 jQuery ajax 调用中将 JSON 响应解析为 JSONP?

json - 如何解析嵌套的JSON字典( map )

ruby-on-rails - 无法从其他计算机访问 MailCatcher

ruby-on-rails - 在 Rails 用户模型中设置 default_address

ruby-on-rails - 使用 Ruby on Rails 读取、更新和添加到 yml 文件