2013-02-14 43 views
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创建新记录时出现上述错误。我无法理解错误是什么,这条记录可以如何插入。使用rails创建记录3.2.11

回答

4

Subject模型只是添加一行:

attr_accessible :name, :position, :value 

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

的更多信息:

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 #.... 
+0

非常感谢你,这是我遇到的确切的错误,这是由于一些安全原因。 – Mothirajha 2013-02-16 06:11:45

相关问题