如果 params.require(:obj) 中允许所有属性怎么办

What if all the attributes are permitted in the params.require(:obj)

假设参数是这样的:

params: { obj: { a: 1, b: 2, c: 3 } }

如果不允许属性 c:

params.require(:obj).permit(:a, :b)

但是,如果obj是必需的,里面的所有属性都是允许的,是否需要在"permit()"中具体添加每个属性?

params.require(:obj) 

这将引发 ForbiddenAttributesError。

您可以使用permit!

params.require(:obj).permit!

permit! 允许批量分配所有当前和未来的模型属性。

这是强参数以及所有关于通过控制器和用户端访问属性的内容。

允许的属性是最终用户可编辑和操作的属性,未分配到其中的属性将不会与数据库一起更新。

可以使用permit!对于所有属性,但请确保您需要提供最终用户可访问的所有参数。

params.require(:obj).permit!

permit! 允许批量分配所有当前和未来的模型属性。