2012-08-01 56 views
2

我構建了一個基於參數的對象,並將其傳遞到update_attributes方法中,在我的控制器的更新方法中。該對象有一個屬性(xyz)沒有被列爲模型中attr_accessible列表的一部分。 Rails跳過了更新有問題的屬性,並生成警告,稱屬性xyz的集體分配失敗。如何使update_attributes無法執行批量分配警告

我想確保update_attributes失敗,如果發生這種情況而不是僅僅得到一個警告。是否有配置設置或可以傳遞給update_attributes調用以實現此目的的選項?

回答

4

您可以更改配置爲使用清潔劑,這將引發一個異常:

config.active_record.mass_assignment_sanitizer = :strict 

編輯:這是可用,因爲3.2。你的問題被標記爲rails 3.1,所以它不會工作。你可以升級到3.2,或者看看這個SO question關於如何修補消毒劑。

+0

非常感謝您的精確答案,併爲兩種版本的導軌提供選項! – Tabrez 2012-08-03 22:19:17

+0

如果您打算升級到3.2,我會推薦這個railscast(順便提一下配置中的變化):http://railscasts.com/episodes/318-upgrading-to-rails-3-2 – aromero 2012-08-03 22:20:51

+0

謝謝aromero。我會看看。 – Tabrez 2012-08-03 22:54:23

2

使用mass_assignment_sanitizer=設置您自己mass_assignment_sanitizer,你可能想看看active_model/mass_assignment_security/sanitizer.rb的例子和active_model/mass_assignment_security.rb對於如何建立自己的消毒液,將失敗。

+0

感謝您的快速響應! – Tabrez 2012-08-03 22:20:23

相關問題