Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 白名单_属性设置为false的质量分配错误_Ruby On Rails_Ruby On Rails 3.2_Mass Assignment - Fatal编程技术网

Ruby on rails 白名单_属性设置为false的质量分配错误

Ruby on rails 白名单_属性设置为false的质量分配错误,ruby-on-rails,ruby-on-rails-3.2,mass-assignment,Ruby On Rails,Ruby On Rails 3.2,Mass Assignment,我目前正在将一个应用程序从Rails 2.3.8升级到Rails 3.2.7,在批量分配方面遇到了一些问题。 当我尝试保存任何模型时,会出现以下错误: Can't mass-assign protected attributes: a,b,c,d 我注意到Rails已将白名单属性的默认值设置为: config.active_record.whitelist_attributes = false 所以我把它改成了真的,但是错误不断出现。我们在一些事情上使用attr_protected,但它似乎

我目前正在将一个应用程序从Rails 2.3.8升级到Rails 3.2.7,在批量分配方面遇到了一些问题。
当我尝试保存任何模型时,会出现以下错误:

Can't mass-assign protected attributes: a,b,c,d
我注意到Rails已将白名单属性的默认值设置为:

config.active_record.whitelist_attributes = false
所以我把它改成了真的,但是错误不断出现。我们在一些事情上使用attr_protected,但它似乎忽略了这些,保护了一切。我猜这是因为模型使用了“accepts\u nested\u attributes\u for”,但这些都是必要的


是否有其他方法可以解决此问题而不使用“attr_accessible”(可访问属性)?

无论何时使用attr_accessible(可访问属性)或attr_protected(受保护属性),您都已为该模型启用了质量分配保护。如果您在评论中提到,该网站纯粹是供内部使用,那么在不使用attr_accessible的情况下解决此问题的唯一方法是从模型或其使用accepts_nested_attributes_for接触的任何模型中删除受保护的attr_。

attr_accessible
是允许为模型大规模分配属性的方法。你想避免使用它有什么原因吗?它是一个相当大的应用程序,所以更新所有内容需要一段时间,而且该网站纯粹是供公司内部使用,所以安全性不是什么大问题。删除attr\u protected似乎没有任何效果,只要接受嵌套的属性就行了,这是必需的。您正在接受嵌套属性的模型是否使用attr\u protected?注意:从长远来看,您可能最好只使用attr_accessible regardlessNo,事实并非如此,尽管我认为您是对的,但我迟早都要使用attr_访问所有内容。