whitelist_attributes设置为false时的质量分配错误

时间:2012-08-14 19:01:30

标签: 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

所以我将其改为true,但错误不断出现。我们使用attr_protected做一些事情,但它似乎忽略了那些并保护一切。我猜这是因为模型使用'accepts_nested_attributes_for',但这些是必要的。

有没有其他方法可以在不使用'attr_accessible'的情况下解决这个问题?

1 个答案:

答案 0 :(得分:1)

每次使用attr_accessible或attr_protected时,都为该模型启用了质量分配保护。如果您在评论中提到纯粹供内部使用,那么在不使用attr_accessible的情况下解决此问题的唯一方法是从模型或使用accepts_nested_attributes_for触摸的任何模型中删除attr_protected。