如何使质量分配警告的update_attributes失败

时间:2012-08-01 03:28:43

标签: ruby-on-rails ruby ruby-on-rails-3.1

我构建了一个基于参数的对象,并在我的控制器的update方法中将其传递给update_attributes方法。该对象具有一个属性(xyz),该属性未作为模型中attr_accessible列表的一部分列出。 Rails跳过更新有问题的属性并生成一个警告,即属性xyz的批量分配失败。

我想确保update_attributes在发生这种情况时失败,而不仅仅是收到警告。是否有配置设置或可以传递给update_attributes调用的选项以实现此目的?

2 个答案:

答案 0 :(得分:4)

您可以更改配置以使用会引发异常的清洁剂:

config.active_record.mass_assignment_sanitizer = :strict

编辑:自3.2起可用。你的问题用rails 3.1标记,所以它不起作用。你可以升级到3.2,或者看看这个SO question如何修补消毒剂。

答案 1 :(得分:2)

使用mass_assignment_sanitizer=设置您自己的mass_assignment_sanitizer,您可能需要查看active_model / mass_assignment_security / sanitizer.rb以获取示例,并查看active_model / mass_assignment_security.rb以了解如何设置自己将失败的Sanitizer。