0
irb(main):016:0> subject  = Subject.new
=> #<Subject id: nil, name: nil, position: nil, visible: false, created_at: nil, updated_at: nil>
irb(main):017:0> 
irb(main):017:0> subject = Subject.new(:name => "First", :position => 1, :value => true)
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: name, position, value

使用 rails 3.2.11 创建新记录时,出现上述错误。我不明白错误是如何插入这条记录。

4

2 回答 2

4

Subject模型中只需添加以下行:

attr_accessible :name, :position, :value

批量分配安全性提供了一个用于保护属性免受最终用户分配的接口。它指定了可以通过批量分配设置的模型属性白名单,例如 new(attributes)、update_attributes(attributes) 或 attributes=(attributes)。

更多信息:

于 2013-02-14T12:18:27.403 回答
0

他们最近进行了一项安全更改rails 3.2.3,要求您通过设置config.active_record.whitelist_attributesfalse http://www.h-online.com/security/news/item/Rails-3-2-3-makes-mass-assignment-明确允许批量分配更改-1498547.html

attr_accessible或者,您可以设置模型中您希望能够更改的属性,而不是允许批量分配,例如

attr_accessible :name, :position, :value #....
于 2013-02-14T12:45:18.457 回答