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创建新记录时出现上述错误。我无法理解错误是什么,如何插入此记录。
答案 0 :(得分:4)
在Subject
模型中添加以下行:
attr_accessible :name, :position, :value
批量分配安全性提供了一个界面,用于保护最终用户分配的属性。它指定了可以通过质量分配设置的模型属性的白名单,例如new(属性),update_attributes(属性)或属性=(属性)。
更多信息:
答案 1 :(得分:0)
他们最近在rails 3.2.3
进行了安全性更改,要求您通过将config.active_record.whitelist_attributes
设置为false
来明确允许批量分配
http://www.h-online.com/security/news/item/Rails-3-2-3-makes-mass-assignment-change-1498547.html
或者,您可以为模型中您希望能够更改的属性设置attr_accessible
,而不是允许批量分配,例如。
attr_accessible :name, :position, :value #....