Rails文档没有说明这一点,但似乎所有使用update_attributes构成了批量分配,如果使用attr_accessible,所有属性都需要列入白名单。 update_attributes的文档没有提到这一点:
update_attributes(attributes)
使用传入的Hash中的所有属性更新此资源,并请求保存记录。
如果由于连接或远程服务错误而导致保存失败,则会引发异常。如果由于资源无效而导致保存失败,则会返回false。
注意:虽然可以使用部分资源属性设置此请求,但请求的完整正文仍将在保存请求中发送到远程服务。
我应该注意哪些其他方法可以触发这种质量分配限制吗?
答案 0 :(得分:1)
我想你应该看看这里:http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html
并观看这个非常古老且非常短暂的railscast http://railscasts.com/episodes/26-hackers-love-mass-assignment
这将对“质量分配”主题提供很多帮助:)
答案 1 :(得分:0)
使用质量赋值时,应使用attr_accessible定义可更新的属性,或使用attr_protected定义不应更新的属性。
此处有关质量分配的更多信息: https://stackoverflow.com/questions/tagged/mass-assignment