【发布时间】:2014-05-27 13:17:36
【问题描述】:
我使用 AJAX 构建了一些内联编辑功能,允许用户更新页面上的大量小信息,然后构建 JS 来更新页面。同样的逻辑应该处理数十个不同的迷你表单,这些表单包含不同的属性或属性集(如名字和姓氏)。在大多数情况下,被更改的值与页面上要更新的值相同,因此很容易编写一个 Jquery 调用来相应地更新内容。但是有时我想覆盖将要更新的内容:例如,当用户更改他们的邮政编码时,他们的城市和州也应该在之后显示。
在这些情况下,我可以添加一个表单元素来指示应该在页面上更新哪些字段。但是当我考虑安全性时,控制器逻辑会变得复杂。我不希望用户能够更改该表单元素以显示其任何属性;相反,我想检查给定属性是否在他们可以更新的属性白名单中(强参数样式),然后使用该信息来决定控制器是否允许在页面上显示该属性。
强大的参数设置似乎不允许这样做。我可以检查 user_params 中是否存在参数,但如果我实际上没有通过 params 哈希提交该属性的新值,则它被视为 user_params 中不存在。
有没有办法检查一个属性是否“在白名单上”,即。是否会被 user_params 接受,即使我们没有尝试更改它?
或者,您是否有其他方法可以满足这一需求?
【问题讨论】:
标签: ruby-on-rails strong-parameters